微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 推送viewcontroller这是一个实例变量,弹出时不会调用dealloc方法

我有一个AViewController,如果我创建BViewController作为这样的实例变量

@interface AViewController ()
{
    BViewController *bVC;
}
@end

然后推

- (void)push {
    bVC = [[BViewController alloc] init];
    [self.navigationController pushViewController:bVC animated:YES];
}

弹出BViewController时不会调用Dealloc方法.

两个视图控制器几乎都是空的,我的意思是没有NSTimers,块或网络请求.
我想AViewController中存在一个强引用循环,但无法弄清楚循环.

所以,有人可以帮我解决这个问题,谢谢!

解决方法

这是基本的存储器管理101.

只有在没有对该对象的强引用之后才会释放对象.

您的ivar bVC强烈引用了视图控制器.推动它增加一个.然后你弹出它,它回到bVC的一个强引用.所以它没有被解除分配.

您可以避开ivar或在某些时候将其设置为nil,以便可以取消分配视图控制器.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐