내가 popToRootViewController
일 때 충돌이 발생합니다. 이것이 내가 설정 한 방법입니다.popover 해제 후 popToRootViewController, EXC_BAD_ACCESS
내가 가진 :
@property (nonatomic, retain) UIPopoverController *popover;
의 dealloc에서 :
[popover release];
버튼이
if (self.popover == nil) {
DetailViewController *detailView = [[[DetailViewController alloc] init] autorelease];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(GoToTest:) name:TestDetailPressed object:detailView];
self.popover = [[[UIPopoverController alloc] initWithContentViewController:detailView] autorelease];
self.popover.delegate = self;
[self.popover presentPopoverFromRect:frame inView:self.scrollView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
을 눌렀을 때 내
DetailViewController
은 본질적으로 단지
UITableView
입니다. 행을 선택하면, 나는 GoToTest 다시이 현재의 클래스에 대한 통지를 게시 : 나는 악기를 실행하면
- (void)GoToTest:(NSNotification *)notification {
if ([self.popover isPopoverVisible]) {
[self.popover dismisspopoverAnimated:YES];
[self handleDismissedPopover:self.popover];
}
[self.navigationController popToRootViewControllerAnimated:NO];
}
- (void)handleDismissedPopover:(UIPopoverController *)popoverController {
self.popover = nil;
self.popover.delegate = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self name:TestDetailPressed object:nil];
}
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
[self handleDismissedPopover:popoverController;
}
, 나는
-[UIPopoverController _popoverDismissAnimationCompleted]
의 좀비 메시지를 얻고 UIViewController
은있다 그 시점에서 -1의 refCt.
나는 popover.delegate = nil을 상상했을 것이다. popover = nil 후에; 무의미하다. – jbat100
@ jbat100 잘 잡습니다. 업데이트 된 답변) – chown
@chown malloc : 표준 레코더를 사용하여 malloc 스택을 디스크에 기록하는 것은 무엇을 의미합니까? –