Dealloc在发布后没有立即打电话

时间:2014-09-26 11:25:18

标签: ios objective-c

我有一个加载两个视图控制器的根视图。 e.g:FirstVCSecondVC

我在应用启动时显示FirstVC作为根视图控制器,在FirstVC上的某些操作上,我首先删除SecondVC

要加载SecondVC,请先按

删除FirstVC
[FirstVCobj.view removeFromSuperView];  
[FirstVCobj release];
FirstVCobj = nil;

之后我分配并创建SecondVC

现在只有在调用SecondVC viewdidload() FirstVC dealloc()方法后,才会调用此方法。 这是正确的执行路径,还是因为我犯了一些错误? 以上就是我删除和创建视图控制器的方法。

2 个答案:

答案 0 :(得分:1)

我认为这是你正在谈论的UIView。


  • addSubview保留视图
  • removeFromSuperView发布或AUTORELEASES它 - 您无法控制的实施细节

到'看'它:将它包装在你自己的池中

@autoreleasepool {
    [FirstVCobj.view removeFromSuperView];  
    [FirstVCobj release];
    FirstVCobj = nil;
}

答案 1 :(得分:0)

[FirstVCobj removeFromParentAndCleanup:YES];

检查这可能有效。