Ios 在非圆弧和保留循环中分配

Ios 在非圆弧和保留循环中分配,ios,weak-references,assign,retain-cycle,weak,Ios,Weak References,Assign,Retain Cycle,Weak,如何在非ARC中处理保留周期 我知道分配是弱者的替代品 如果分配的对象被解除分配,而分配未被解除分配,则弱将其值设置为nil 那么,前面是如何做的呢?有人能帮我理解,归零弱引用(ARC称之为弱引用)只存在于ARC下 非归零弱参考(ARC称之为“不安全”\u“未恢复”)可用于MRC或ARC,是MRC中使用的唯一一种“弱参考” 您正在询问如何避免使用非零弱引用挂起引用。你只需要设计程序的逻辑,这样它就不会发生。没那么难 通常,“父”对象将具有对“子”对象的强引用,然后从“子”对象到“父”对象的反向引

如何在非ARC中处理保留周期

我知道分配是弱者的替代品

如果分配的对象被解除分配,而分配未被解除分配,则弱将其值设置为nil

那么,前面是如何做的呢?有人能帮我理解,归零弱引用(ARC称之为弱引用)只存在于ARC下

非归零弱参考(ARC称之为“不安全”\u“未恢复”)可用于MRC或ARC,是MRC中使用的唯一一种“弱参考”

您正在询问如何避免使用非零弱引用挂起引用。你只需要设计程序的逻辑,这样它就不会发生。没那么难


通常,“父”对象将具有对“子”对象的强引用,然后从“子”对象到“父”对象的反向引用将是弱引用(在本例中为非零弱引用)。您所要做的就是,当“父”对象被解除分配时,在其deinitializer中,
nil
去掉“子”对象对它的后面引用——它可以访问这些“子”对象,因为它有对它们的引用。

没有ARC,您负责执行
retain
release
操作。您可以在不保留
retain
的情况下保留引用,但这与
weak
不同,因为如果对象被释放,则会留下无效指针。这就是为什么非ARC是一种痛苦,最好是忘记它。那么,使用了什么类型的属性声明(赋值)或其他什么?您可以使用
assign
copy
retain
。默认值是
assign
,而使用ARC时默认值是
strong
retain
)@Paulw11-所以在一周内,我们会在执行操作之前检查它是否为nil…那么如何检查非ARC中的无效指针?访问它并查看您的程序是否崩溃。因此,在parent的dealoc方法中,我们必须将self=nil标记为零。。你能用一个小的代码例子给我解释一下吗?我不太了解deinitializer部分。所以在本周,我们将在执行操作之前检查它是否为nil…那么如何检查非ARC中的无效指针?@vinoth.kumar:在父对象的
dealoc
方法中,它将执行类似
childObject.delegate=nil
,其中子对象持有一个称为
委托
的弱引用到父对象。@vinoth.kumar:不可能“检查”无效指针——在C中使用无效指针是未定义的行为。