[英]ARC + Dealloc is not called
我有点困惑,因为在ARC中没有调用我的dealloc。 我在应用程序中使用了情节提要。
情况1:当我使用情节IBOutlet
所有IBOutlet
,调用了dealloc
情况2:当我尝试在UIViewController
使用alloc
和init
方法时,未调用我的dealloc
。 如下面。
UIViewController *vc = [[UIViewController alloc] initWithNibName:@"ProfileDetailView" bundle:nil];
__weak ProfileDetailView *detailview = (ProfileDetailView *)vc.view;
detailview.backgroundColor = [UIColor clearColor];
vc = nil;
....Set value in object.....
[self.view addSubview:detailview];;
detailview = nil;
您能解释为什么不调用dealloc
吗? 和我怎么能实现调用dealloc
?
谢谢
ARC的概念是,对象的保留计数理论上应为1,以便对其进行重新分配。 执行时:
[self.view addSubview:detailview];;
你的self.view
增量detailview
的1保留计数时,将其添加到view.subviews
。 从逻辑上讲,当self.view
移除detailview
,保留计数被减1。
同样,这是一个理论观点。 现实通常是:
没有人真正知道神秘的Objective-C运行时如何工作! (开个玩笑,整个源代码都可以在网上找到。)
感谢您的回复。 当视图控制器弹出时,我能够调用我的dealloc函数。 为了实现这一点,当用户点击后退按钮时,我们需要从视图中删除添加的子视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.