繁体   English   中英

首先调用哪种dealloc方法?

[英]Which dealloc method is called first?

假设我有2个类,类A和B.通过组合,类A具有类B的实例。换句话说,类A是创建类B的实例的类。

如果我在我的对象的最终版本中是一种类A,那么将首先执行B类的dealloc方法吗? 总是这样吗? 是否会出现A类dealloc将在B类之前执行的情况?

我试图理解类的dealloc方法的执行顺序。

(这是在ARC)

如果您删除(或实际上,删除最后一个强引用)A类的实例,它将被取消分配。 在ARC下,作为其释放的一部分 ,它将删除其对B类实例的强引用,如果没有其他任何强有力的引用,它将被释放。

因此,首先调用A的dealloc方法。

如果你依赖这个操作顺序来做任何事情,这是一个非常糟糕的代码味道。

当对给定对象的最后一个强引用消失时,它的-dealloc将运行,它将删除对其实例变量的所有强引用。 如果那些是对这些对象的最后一个强引用,那么该过程将重复它们。

换句话说,如果A拥有B,那么A将在B之前解除分配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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