使用 loadNibNamed:owner:topLevelObjects: 是不是允许***插座中的弱引用?

Posted

技术标签:

【中文标题】使用 loadNibNamed:owner:topLevelObjects: 是不是允许***插座中的弱引用?【英文标题】: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 的一般使用。 【参考方案1】:

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

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

【讨论】:

我打算保留控制器内部的整个阵列,所以这几乎证实了我的想法。

以上是关于使用 loadNibNamed:owner:topLevelObjects: 是不是允许***插座中的弱引用?的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)