我有点困惑,因为我的dealloc不是在ARC中调用的。我在我的应用程序中使用了故事板。
案例1:当我使用情节提要中的所有IBOutlet时,我的dealloc被调用
案例2:当我试图在dealloc中使用alloc和init方法时,我的UIViewController没有被调用。如下所示。
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的调用
谢谢
发布于 2015-02-06 21:06:41
ARC的概念是,一个对象的保留计数理论上应该是1,以便它被释放。在执行以下命令时:
[self.view addSubview:detailview];;当您的self.view将detailview的保留计数添加到view.subviews中时,它会将其递增1。从逻辑上讲,当self.view删除detailview时,保留计数将递减1。
同样,这也是理论的观点。实际情况通常是:
疯狂。
没有人真正知道神秘的Objective-C运行时是如何工作的!(开个玩笑,所有的源代码都可以在网上找到。)
发布于 2015-02-07 13:42:11
感谢您的回复。当视图控制器弹出时,我能够调用我的dealloc函数。为了实现这一点,当用户点击后退按钮时,我们需要从我的视图中删除我添加的子视图。
https://stackoverflow.com/questions/28366347
复制相似问题