【发布时间】:2011-12-31 12:21:10
【问题描述】:
在文档中,我阅读了 “出口通常应该是弱的,除了从文件所有者到 nib 文件中的顶级对象(或者,在 iOS 中,故事板场景)应该是强的。”
例子?我不明白什么时候最好对 IBOutlet 使用“弱”而不是“强”属性。
【问题讨论】:
标签: objective-c ios cocoa-touch ios5 automatic-ref-counting
在文档中,我阅读了 “出口通常应该是弱的,除了从文件所有者到 nib 文件中的顶级对象(或者,在 iOS 中,故事板场景)应该是强的。”
例子?我不明白什么时候最好对 IBOutlet 使用“弱”而不是“强”属性。
【问题讨论】:
标签: objective-c ios cocoa-touch ios5 automatic-ref-counting
一般来说:如果您正在创建 ViewControllers 子视图的子视图的出口,它应该是弱的。只要顶视图存在(在 viewDidLoad 和 viewDidUnload 之间),对象就存在。由于 iOS 5 ARC 会自动取消弱链接,当 viewController 卸载其视图并且视图层次结构被破坏时,您的 outlet 会自动设置为 nil。
但也许您想在您的 nib 文件中创建另一个对象(模型对象)。由于此对象不在视图层次结构下,因此您需要使 iboutlet 强大。如果你使它弱链接,对象将被自动释放,因为没有其他对象对它有强引用,ARC 将释放它并将 nil 设置为你的 IBOutlet。这不是子视图的情况,因为它的父视图与它保持着很强的联系。
【讨论】: