我對使用屬性有一些疑問。通過閱讀ARC轉換文件,應該使用強和弱代替保留和分配。通過與自動生成的代碼比較瞭解@property屬性Xcode 4
但是,至少有兩種情況,Xcode自動生成的代碼正在做其他事情。我想知道這是否僅僅是來自Xcode的'尚未更新'的工具,或者如果我錯過了一些東西。
第一種情況是使用核心數據管理對象自動生成。
已經創建的相關類之後,這是出現在.h文件中:
@property(nonatomic,retain) NSString *myProperty;
什麼是編譯器在這種情況下做什麼?將retain
替換爲strong
?
但奇怪的情況下(我的知識的缺乏)是IBOutlet
,自動生成的代碼與.h文件中的連接接口生成器出口時是這樣的:
@property (unsafe_unretained, nonatomic) IBOutlet UILabel *myOutlet;
,並再次這似乎從不同推薦'弱'屬性。我的意思是用戶在各種論壇上推薦。
,這在viewDidUnload:
- (void)viewDidUnload {
[self setMyOutlet:nil];
}
加入爲什麼我們需要這種說法?即使通過運行探查儀器,也沒有任何內存泄漏或其他內存問題的痕跡?我的意思是,沒有設置爲nil
一切正常。
小增加:在ARC中,unsafe_unretained與non-ARC中的assign相同。如果你不瞄準iOS4,根本就沒有真正的理由使用'unsafe_unretained'。此屬性說明符是爲了在iOS4上允許ARC而引入的。 – 2012-02-18 09:52:46