2012-10-14 33 views
21

當您在多數情況下閱讀here時,IBOutlet應該很弱。用於ARC項目中的NSTextView的IBOutlet

現在,您可以在development library中看到,並非所有的類都支持弱引用。 (例如NSTextView)。這意味着你必須使用分配:

@property (assign) IBOutlet NSTextView *textView; 

如果你使用一個弱引用您會收到以下錯誤: 「弱不可用物業的合成是不允許的,因爲它需要__weak對象的伊娃的合成「

缺少提及的文檔現在您必須在使用後再次將屬性設置爲零例如由dealloc方法:

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

據我瞭解打上NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLE不支持弱引用,但究竟是什麼原因班?

+0

根據鏈接的帖子'IBOutlets'應該**強**默認! – Jay

回答

13

我想我發現爲什麼有些類不支持弱引用的原因:

正如你可以閱讀here

理由:在歷史上,已經有可能爲一類,以提供自己的通過重寫保留,釋放等引用計數實現。但是,對一個對象的弱引用需要與其類的引用計數實現協調,因爲除了別的以外,對於最終版本來說,弱加載和存儲必須是原子的。因此,現有的自定義引用計數實現通常不會在沒有額外努力的情況下支持弱引用。這是不可避免的,不會破壞二進制兼容性。

相關問題