여기에 모범 사례가 필요합니다 ...UIViewControllers가 서로 위로 넘어 가기
내비게이션 응용 프로그램. 루트 뷰는 UIViewController 세부 정보 (VC1이라고 함)까지 드릴 다운 할 수있는 UITableView입니다. 사용자가 일부 작업을 시작하려고하지만 계속 진행하려면 에에 추가 정보가 필요합니다. 그렇다면 VC1 allocs &은 속성에서 VC2에 대한 강력한 참조를 보유하는 "뒤집기"전환을 사용하여 모달 VC2를 제공합니다.
모두 상당히 표준입니다. 여기 내가 곤경에 처한 곳이야. 사용자가 VC2에서 필요한 정보를 채우면 앱은 MFMailComposeViewController
으로 계속 이동하거나 VC1로 되돌릴 수 있습니다. MailCompose를 계속 수행하면 종료 될 때 VC1으로 돌아와야합니다.
[self dismissModalViewControllerAnimated:YES];
[VC1 performSelector:@selector(showMailModalView) withObject:nil afterDelay:0.2];
내가 VC1에 EXC_BAD_ACCESS를 얻을 분명히, VC1 내 약한 참조가 이미하고있다, 때문에 : VC2 자체를 닫 시도와 현재
MFMailComposeViewController
때
VC2는 VC1에 약한 참조 및 문제 arrises있다 VC1이 VC2에 대한 강력한 참조를 가지고있다하더라도! dealloc'd!
제 질문은 ... 어떻게 처리해야합니까? 대의원 패턴이 더 나아질까요? 그게 어떻게 생겨 났을까요?
참고 : VC1은 VC1 (가능한 자체 NIB 포함)에서 가능한 한 분리 된 상태로 유지하기 위해 VC1이 상당히 크고 VC2가 자주 필요하지 않습니다.