ARC项目中的NSTextView的IBOutlet

时间:2012-10-14 13:32:29

标签: automatic-ref-counting nstextview iboutlet weak

在大多数情况下阅读here时,IBOutlet应该很弱。

现在您可以阅读development library并非所有类都支持弱引用。 (例如NSTextView)。这意味着您必须使用assign:

@property (assign) IBOutlet NSTextView *textView;

如果使用弱引用,则会出现以下错误: “不允许合成弱不可用属性,因为它需要合成__weak对象的ivar”

文档错过了提及现在你必须在使用后再次将属性设置为nil,例如:通过dealloc方法:

- (void)dealloc
{
    self.textView = nil;
} 

据我所知,标有NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE的类不支持弱引用,但原因是什么?

1 个答案:

答案 0 :(得分:13)

我想我找到了某些类不支持弱引用的原因:

您可以阅读here

基本原理:从历史上看,类可以通过覆盖retain,release等来提供自己的引用计数实现。但是,对对象的弱引用需要与其类的引用计数实现进行协调,因为事物,弱负荷和商店必须是最终版本的原子。因此,现有的自定义引用计数实现通常不支持弱引用而无需额外的工作。在不破坏二进制兼容性的情况下,这是不可避免的。