我在导航控制器上弹出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是一个弱引用。使用强引用是不可能的,因为该内存只会在周围徘徊。

最佳答案

例如,如果要从viewController B弹出到A.,请确保在使用dealloc方法之前,不要释放B视图控制器的任何IBOutlet。

10-08 16:56