繁体   English   中英

不调用ARC + Dealloc

[英]ARC + Dealloc is not called

我有点困惑,因为在ARC中没有调用我的dealloc。 我在应用程序中使用了情节提要。

情况1:当我使用情节IBOutlet所有IBOutlet ,调用了dealloc

情况2:当我尝试在UIViewController使用allocinit方法时,未调用我的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM