【问题标题】:Does using loadNibNamed:owner:topLevelObjects: allows for weak references in top-level outlets?使用 loadNibNamed:owner:topLevelObjects: 是否允许顶级插座中的弱引用?
【发布时间】:2013-04-13 19:02:28
【问题描述】:

我最近才意识到

loadNibNamed:owner:

在 10.8 中已弃用,因此已开始将其切换到

loadNibNamed:owner:topLevelObjects:

我正在使用 ARC,由于这个新版本现在允许我的控制器保留对我 nib 中所有顶级对象的强引用,将我的出口连接到顶级对象更改为弱引用是否有意义(对于那些支持弱引用的对象,当然)?

这只是为了与其他渠道保持一致,我明白(在这种情况下)为同一个对象持有两个强引用并没有错。

我不是在询问使用 IBOutlets 和 ARC 的一般情况,我是在特别询问何时通过新的 10.8 方法加载 nib 以查看它是否改变了必须保持在顶部的规则使用强插座的级别对象。

想法?

【问题讨论】:

  • @GabrielePetronella 我会考虑将其作为非重复项保持打开状态,因为在这种情况下与loadNibNamed::owner:topLevelObjects: 合作存在细微差别。具体来说,如果删除 topLevelObjects 数组会发生什么问题。
  • 我同意。它与链接的问题有关,但我的问题是针对新 10.8 方法的使用,而不是针对 ARC 与 IBOutlets 的一般使用。

标签: objective-c cocoa automatic-ref-counting nib


【解决方案1】:

这在很大程度上取决于您对topLevelObjects 数组指针所做的工作。一旦掌握了它,您要么需要保留整个数组,要么需要对数组中的每个对象进行强引用,以确保不会丢失任何东西。

如果您要保存数组,则可以安全地使用对顶级对象的弱引用。如果你不这样做,你必须持有强大的。

【讨论】:

  • 我打算保留控制器内部的整个阵列,所以这几乎证实了我的想法。
猜你喜欢
  • 2010-09-21
  • 1970-01-01
  • 2016-03-26
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
相关资源
最近更新 更多