使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)