[英]Difference between Strong and Weak IBOutlets
是什么區別strong
與weak
在Xcode的iOS 5.1 SDK IBOutlets?
我之前使用的是4.3 SDK,其中沒有強大的IBOutlets。 此外,iOS 5.1 SDK中不提供(自動)版本。
Strong
意味着只要此屬性指向一個對象,該對象就不會自動釋放。 在非ARC中,它是retain
的同義詞
指定與目標對象存在強(擁有)關系。
相反, Weak
意味着屬性指向的對象可以自由釋放,但前提是它將屬性設置為NULL。 在ARC中,您使用weak來確保您不擁有它指向的對象
指定與目標對象存在弱(非擁有)關系。 如果目標對象已取消分配,則屬性值將自動設置為nil。
Nonatomic
意味着如果多個線程嘗試一次讀取或更改屬性,則可能發生錯誤。 后果是會有部分寫入的值或過度釋放的對象= CRASH。
請看Apple的文檔 。
從那里,例子是
@property (weak) IBOutlet MyView *viewContainerSubview;
@property (strong) IBOutlet MyOtherClass *topLevelObject;
檢查也該知道更多關於strong
和weak
。
在ARC(自動引用計數)中, Strong
告訴編譯器屬性 - 所有者關系是“強”。 它相當於retain
在自動釋放池內存方案中。 Apple在這里有一篇關於過渡到ARC的文章。
您聲明為strong的屬性,它擁有該對象,編譯器將負責任何對象分配此屬性。 當我們設置為nil時,此屬性將被銷毀。
如果您不想要控制生命周期,那么您將聲明為周屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.