保留发送到解除分配的UIViewController

时间:2014-12-24 04:42:05

标签: ios objective-c cocoa-touch uinavigationcontroller uikit

当我从导航控制器弹出VC并模拟内存警告时,我遇到了问题,应用程序将崩溃。 NSZombies向我展示了它是哪个vc,但有趣的是,它发生在一个没有代码的香草UIViewController上。

这是我的推送代码:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:     

    (NSIndexPath *)indexPath {
    self.testVc = [[ZTestVCViewController alloc] init];
    [self.navigationController pushViewController:self.testVc animated:YES];
}

以下是模拟内存警告时发生的情况:

2014-12-23 20:28:12.776 ----[3518:78070] Received memory warning.
2014-12-23 20:28:12.778 ----[3518:78070] *** -[ZTestVCViewController retain]: message sent to deallocated instance 

无法想象我的生活。

我已经通过其他SO帖子进行了搜索,但似乎没有任何相似之处,因为这种情况发生在一个没有悬空指针的香草vc上。

编辑:

想补充说我正在使用ARC和self.testVc是一个弱引用。使用强引用是不可能的,因为内存只会徘徊。

1 个答案:

答案 0 :(得分:0)

例如,如果从viewController B弹出到A,那么请确保在dealloc方法之前没有释放任何B视图控制器的IBOutlet。