我有一个AViewController,如果我像这样创建一个BViewController实例变量
@interface AViewController ()
{
BViewController *bVC;
}
@end
然后按
- (void)push {
bVC = [[BViewController alloc] init];
[self.navigationController pushViewController:bVC animated:YES];
}
当BViewController弹出时,不会调用Dealloc方法。
两个viewcontrollers几乎都是空的,我的意思是没有NSTimers,块或网络请求。 我想AViewController中存在一个强大的参考周期,但无法弄清周期。
所以,任何人都可以帮助我,谢谢!
答案 0 :(得分:3)
这是基本的内存管理101.
只有在没有对该对象的强引用之后才会释放对象。
你的ivar bVC
强烈引用了视图控制器。推动它增加另一个。然后你弹出它,它回到bVC
的一个强引用。所以它没有被解除分配。
您可以在某个时候避开ivar或将其设置为nil
,以便可以取消分配视图控制器。