0

我的一个视图控制器关闭了 ARC,但是当我导航到上一个视图控制器时,我的 dealloc 方法没有被调用。

对于我使用的推送视图控制器

Magazine_ArticleViewController_iPhone *viewController = [[Magazine_ArticleViewController_iPhone alloc] 
                                                         initWithNibName:@"Magazine_ArticleViewController_iPhone" 
                                                         bundle:[NSBundle mainBundle]];

viewController.hidesBottomBarWhenPushed = YES;

IssueDataHolder *dataHolder = [m_arrIssueData objectAtIndex:m_nCurrentIssueIndex];

NSLog(@"%d",dataHolder.nIssueID);

[viewController setM_IssueDataHolder:dataHolder];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release]; 

并导航我以前使用的视图控制器

[self.navigationController popViewControllerAnimated:YES];
4

2 回答 2

1

对于仍然有问题 dealloc not called 并且无法找到原因的开发人员:根据 Paul 的回答[performSelector:withObject:afterDelay:]可能是此问题的原因。您必须[performSelector:]在推送新的 ViewController 之前取消。

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(Method) object:nil];
于 2013-06-01T09:54:51.693 回答
0

我的 Magazine_ArticleViewController_iPhone viewcontroller 的 dealloc 没有被调用,因为在 viewcontroller(我正在推送 Magazine_ArticleViewController_iPhone viewcontroller)中我接受了一个具有保留属性的委托。当我做到@“assign”时,dealloc被解雇了。

我完全同意@Paul de Lange的评论。

将委托的保留属性更改为分配

于 2013-06-02T07:13:11.293 回答