首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用ARC + Dealloc

未调用ARC + Dealloc
EN

Stack Overflow用户
提问于 2015-02-06 20:57:55
回答 2查看 381关注 0票数 0

我有点困惑,因为我的dealloc不是在ARC中调用的。我在我的应用程序中使用了故事板。

案例1:当我使用情节提要中的所有IBOutlet时,我的dealloc被调用

案例2:当我试图在dealloc中使用allocinit方法时,我的UIViewController没有被调用。如下所示。

代码语言:javascript
复制
 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的调用

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-02-06 21:06:41

ARC的概念是,一个对象的保留计数理论上应该是1,以便它被释放。在执行以下命令时:

代码语言:javascript
复制
[self.view addSubview:detailview];;

当您的self.viewdetailview的保留计数添加到view.subviews中时,它会将其递增1。从逻辑上讲,当self.view删除detailview时,保留计数将递减1。

同样,这也是理论的观点。实际情况通常是:

疯狂。

没有人真正知道神秘的Objective-C运行时是如何工作的!(开个玩笑,所有的源代码都可以在网上找到。)

票数 1
EN

Stack Overflow用户

发布于 2015-02-07 13:42:11

感谢您的回复。当视图控制器弹出时,我能够调用我的dealloc函数。为了实现这一点,当用户点击后退按钮时,我们需要从我的视图中删除我添加的子视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28366347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档