3

所以這裏是我的問題:我創建了一個自定義的AVCaptureSession拍照。我不知道爲什麼,但第三次你撥打startRunning,它崩潰了。我實施了didReceiveMemoryWarning,它在墜毀之前沒有被調用。我還在上面運行了儀器,並且沒有與AVCaptureSession相關的內存泄漏。在XCode中也沒有通過控制檯的日誌。AVCaptureSession「startRunning」crash

所以我的問題是...即使didReceiveMemoryWarning沒有被調用,它是一個內存問題嗎?這是我的一些代碼。

viewWillDisappear(視圖控制器)

- (void)viewWillDisappear:(BOOL)animated { 
if (cameraFlashButton) { [cameraFlashButton release]; } 
if (switchCamera) { [switchCamera release]; } 
if (cameraBadgeBack) { [cameraBadgeBack release]; } 
if (cameraBadgeNumber) { [cameraBadgeNumber release]; } 
if (cameraUseButton) { [cameraUseButton release]; } 
if (cameraOverlayView) { [cameraOverlayView release]; } 
if (blackOverlay) { [blackOverlay release]; } 
if (loadingIndicator) { [loadingIndicator release]; } 
if (cameraPickButton) { [cameraPickButton release]; } 
if (whiteOverlay) { [whiteOverlay release]; } 
if (imageOverlay) { [imageOverlay release]; } 
if (captureManager) { [captureManager release], captureManager = nil; } 
if (theCaptureSession) { [theCaptureSession release], theCaptureSession = nil; } 
[super viewWillDisappear:YES]; 
} 

的dealloc(CaptureSessionManager)

- (void)dealloc { 
if ([self captureSession]) { [[self captureSession] stopRunning]; } 
if (previewLayer) { [previewLayer release], previewLayer = nil; } 
if (captureSession) { [captureSession release], captureSession = nil; } 
if (stillImageOutput) { [stillImageOutput release], stillImageOutput = nil; } 
if (stillImage) { [stillImage release], stillImage = nil; } 
[super dealloc]; 
} 

想法?如果您需要查看其他內容,只需詢問!提前致謝。

回答

1

如果didReceiveMemoryWarning已正確實施並且從未調用,則說明您的問題可能不是由於內存不足。在開始捕捉會話運行時,還有很多其他方式可能導致崩潰。你需要發佈更多的實現以及崩潰的細節來幫助調試。

但是,您發佈的代碼有許多低效率和樣式問題。在Objective-C消息中注意到零是非常好的。因此,在您的viewWillDisappeardealloc方法中,您可以並應該刪除每個if測試可讀性。例如,而不是:

if (cameraFlashButton) { [cameraFlashButton release]; } 

只需使用:

[cameraFlashButton release]; 

如果使用正確的合成存取它也更好用簡單

取代線條狀

if (previewLayer) { [previewLayer release], previewLayer = nil; } 

self.previewLayer = nil; 
+0

搞砸了一下後,我fo解決問題。顯然這是一個內存問題,但我通過將分辨率更改爲較低質量,並且比以往更快捷地修復了問題。 – iosfreak 2012-07-06 03:18:09

+0

你會上傳答案你做了什麼 – java 2013-09-05 10:01:17