2012-01-30 1 views
0

UIImagePickerController 컨트롤이있는 동안 내 응용 프로그램이 didReceiveMemoryWarning을 가져 오면 피커 (따라서 피커의 대리자)가 할당 취소 된 viewcontroller로 설정되는 이유를 파악하려고합니다.didReceiveMemoryWarning을받은 경우 UIImageViewController의 대리인이 없음

보기 컨트롤러 하나

self.postImagePicker = [[UIImagePickerController alloc] init]; 
self.postImagePicker.delegate = self; 
self.postImagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; 
self.postImagePicker.allowsEditing = YES; 
[self presentModalViewController:self.postImagePicker animated:YES]; 

가 다음에, UIImageViewController 표시되는 통화 및 화상이 선택된다. 그런 다음 메모리 경고를 시뮬레이트합니다. 대화 상자를 표시 한보기 컨트롤러에 메모리 경고 오류가 나타나고 선택 도구가 0x0으로 설정됩니다. 이는 대리자가 현재 유효하지 않음을 의미합니다.

저는 ARC를 사용하고 있습니다. 무언가가 UIImageViewController를 호출하여 UIImageViewController를 가리키는 뷰가 다시로드되지 않도록하여 UIImageViewController에 대한 포인터가 유효하지 않게되는 방식으로 변경 되었습니까?

답변

0

체크 didReceiveMemoryWarning. 거기에 self.postImagePicker = nil;이 있습니까? 업스트림 뷰 컨트롤러에 대해 didReceiveMemoryWarning 메소드를 확인하십시오. 이 뷰 컨트롤러에 대한 참조가 있습니까? 그렇지 않은 경우 네비게이션 컨트롤러가이 뷰 컨트롤러를 덤프 할 수 있습니다. delegate은 약한 참조이므로 아무 것도없는 경우보기 컨트롤러를 유지하는 것으로 충분하지 않습니다.

0

nil 다른보기 컨트롤러의 viewDidUnload에서보기 컨트롤러를 편집했다고 추측 할 것입니다. 명시 적으로 해제되거나 (처음에 strong 참조를 유지하지 않은 경우)보기 컨트롤러가 할당 취소 될 이유가 없습니다.

관련 문제