簡體   English   中英

強弱IBOutlets之間的區別

[英]Difference between Strong and Weak IBOutlets

是什么區別strongweak在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;

檢查也知道更多關於strongweak

在ARC(自動引用計數)中, Strong告訴編譯器屬性 - 所有者關系是“強”。 它相當於retain在自動釋放池內存方案中。 Apple在這里有一篇關於過渡到ARC的文章。

您聲明為strong的屬性,它擁有該對象,編譯器將負責任何對象分配此屬性。 當我們設置為nil時,此屬性將被銷毀。

如果您不想要控制生命周期,那么您將聲明為周屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM