2013-03-21 3 views
0

iPhone에 사진을 찍을 때 메모리 경고가 표시되고 앱이 중단됩니다. 카메라를 열 때 코드가 작동하고 그림이 캡처 된 후 작동하는 코드가 작동하기 때문에 문제를 해결하는 방법을 모르지만 앱의 사진 섹션을 찍는 카메라의 어딘가에 오류가 발생합니다 ...사진을 찍을 때 크래시/메모리 경고 - iPhone

다음과 같이 카메라를 시작하십시오 :

imagePicker = [[UIImagePickerController alloc] init]; 

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
{ 
    [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera]; 
} 
else 
{ 
    [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 
} 

if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear]) { 
      imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
} else if ([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]) { 
      imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
} 

imagePicker.delegate = self; 

[self presentModalViewController:imagePicker animated:YES]; 

"수신 된 메모리 경고"가 표시됩니다. Recorder_SourceStarted 및 AVCaptureDeviceDidStartRunningNotification 바로 앞에 있습니다. 나는 다음 응용 프로그램이 충돌하기 전에 Recorder_DidStartPreviewing, Recorder_FlashStateChanged, Recorder_DidStartFocusOperation, Recorder_DidCompleteFocusOperation, Recorder_FlashStateChanged, Recorder_WillCapturePhoto, Recorder_DidCapturePhoto 및 Recorder_PhotoStillImageSampleBufferReady을 얻을

.

Recorder_PhotoStillImageSampleBufferReady는 앱이 다운되기 전에 마지막 알림입니다. _UIImagePickerControllerUserDidCaptureItem으로 이동하지 않습니다. 앱에서 코드를 다시 실행하기 시작합니다.

때로는 충돌이 발생하지 않습니다. 메모리 경고가 발생하고 응용 프로그램이 계속 작동하지만이 메모리 경고로 인해 충돌이 발생할 가능성이 있으며 테스트에서 충돌이 발생합니다. 무슨 일이 일어나고 있는지 파악하고 고치고 싶습니다.

도움이 될 것입니다. 감사!

+0

'- (void) didreceivememorywarning' 함수에 어떤 것이 있습니까? – Niro

+0

아니요 ...이 문제를 해결하는 데 도움이 될만한 것이 있습니까? – RanLearns

+0

메모리가 부족한 이유를 진단하는 측면에서 Instruments의 'Leaks'도구를 사용해야합니다. 그러면 메모리 누수가있을 수 있습니다. "메모리 부족 경고"를받을 때'- (void) didreceivememorywarning'이 호출되므로 불필요한 변수를 해제하고 정리할 수 있습니다. – Niro

답변

1

내가 ARC를 사용하고 있기 때문에 dealloc'ing이 아니라 앱에서 tableViews를 allocalling했으며 분명히 tableViews를 할당하기위한 호출이 이루어진 후 사진을 캡처하려고하면 메모리가 손상 될 수 있습니다. tableview가 요청 될 때마다 alloc'ing 대신 사용자가 테이블을 볼 필요가있을 때 tableviews에서 .hidden 속성을 설정하고 해제하도록 변경하여 이제 사진을 찍을 때 응용 프로그램이 중단되지 않습니다. 때로는 메모리 경고가 있지만 절대로 충돌이 없으며 사진을 찍을 때 메모리 경고가 전혀없는 경우가 있습니다.

관련 문제