2012-06-23 110 views
7

strongweak Xcode iOS 5.1 SDK中的IBOutlets有什麼區別?強和弱IBOutlets之間的區別

我之前使用4.3 SDK,其中強大的IBOutlets不存在。另外,(自動)發佈在iOS 5.1 SDK中不可用。

+0

你不能比較強和非原子。我認爲你的意思是強弱之間的區別。您是否嘗試過在Apple文檔中閱讀有關它的內容? – dasdom

+0

@dasdom好弱和強烈的參考差異引導我或任何文檔鏈接 – Dinesh

+0

如果禁用ARC,則iOS 5中可以使用自動釋放和發佈。 ARC是可以啓用或禁用的功能。 – borrrden

回答

10

Strong意味着只要該屬性指向一個對象,該對象就不會自動釋放。在非ARC它是retain

的代名詞指定存在於 目標對象強大的(擁有)關係。

Weak而是意味着屬性指向的對象可以自由釋放,但前提是它將屬性設置爲NULL。在ARC您使用不足,不能保證你不擁有它指向的對象,以

指定存在於 目標對象弱(非所有)的關係。如果目標對象被釋放,則 屬性值將自動設置爲零。

Nonatomic意味着如果多個線程嘗試讀取或立即更改屬性,可能會發生不良情況。後果是會有部分寫入的值或過度釋放的對象= CRASH。

再看看here, at Apple's documents

從那裏,例子是

@property (weak) IBOutlet MyView *viewContainerSubview; 
@property (strong) IBOutlet MyOtherClass *topLevelObject; 

檢查也this更多地瞭解strongweak

+0

弱點不是什麼你說的是。 –

+0

然後只是發佈你的答案。 – Phillip

+0

感謝您的回答! – Dinesh

2

在ARC(自動引用計數)中Strong告訴編譯器該屬性所有者關係是「強大的」。它相當於自動釋放池內存方案中的retain。蘋果有一篇關於過渡到ARC here的文章。

0

您聲明爲強的屬性,它擁有該對象,並且編譯器將關心哪個對象分配此屬性。當我們設置爲零時,該屬性將被銷燬。

當你不想控制生命時間,那麼你宣佈爲一週屬性。