0

今天我读了关于ARC的书。所以有两种类型的点,分别是强点和弱点。我已经搜索了有关他们的财产并得到了它。但我看不出或不明白为什么我们用弱点而不是强点?这是一个简单的问题。请让我轻松知道。

谢谢。

4

3 回答 3

1

首先它不是弱点,它的弱点。可以说,如果您不想拥有特定对象的所有权,则可以使用弱属性。如果此引用的实际所有者释放 this 并且其保留计数变为零,则弱引用将自动分配给 nil。这将使您免于崩溃。

您可以在此处获取更多信息:https ://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html

于 2014-03-21T04:11:52.097 回答
0

为简单起见,您使用“弱属性”和/或“弱变量”进行以下操作:

  1. 您不想获得对象的所有权。像委托/数据源一般被声明为弱。
  2. 您可能会说您也可以使用“assign”而不是“weak”。当变量从内存中释放时,使用“weak”会自动将其设置为 nil,而“assign”现在指的是已释放的实例,如果您尝试对其执行某些操作,代码可能会崩溃。
  3. 避免保留循环导致内存泄漏。例如,避免在块中传递“self”。使用“__weak id weakSelf = self”,现在在块中传递weakSelf。

ARC 是您的朋友,但如果不注意上述事项,可能会造成潜在的伤害。

于 2014-03-26T22:56:29.363 回答
0

这个问题在苹果的页面上得到了很好的回答!我只会链接它,希望它真的能帮助你获得所需的信息!

链接在这里:)

我也认为这个 SO 问题对理解这些事情非常有帮助:[链接]here(Objective-C ARC:强 vs 保留和弱 vs 分配

于 2014-03-26T22:48:53.030 回答