簡體   English   中英

Objective-C屬性關鍵字

[英]Objective-C Property Keywords

好的 - 新手Objective-C問題:

聲明屬性時,有如下屬性:

@property (weak, nonatomic)

我意識到我需要閱讀這篇文章才能完全理解它,但我發現的大部分內容都是參考資料,所以鏈接到一篇好文章,可以解釋最佳實踐/使用場景(何時使用哪些屬性用於基元,參考類型,出口)等等)或者幾個例子將不勝感激。

謝謝!

盡管回答我已經找到了這個問題,但是谷歌相同的問題,並且還發現蘋果的這篇文章完全解釋了整個事情。

希望對正在研究同樣事物的人有所幫助,

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html

從我最近的課程(靈感來自Paul Hegarty)

nonatomic - NOT thread safe看到鏈接Justin在上面的評論中指出

強(或保留) - 保持此對象分配,直到我不再指向它(將其設置為nil)。 編譯器也會把它拋出堆(釋放它)如果我不再強烈指向(我得到dealloc'd)

weak - 只要有一些東西仍然強烈指向它,就保持這個對象的分配。 IBOutlets通常被聲明為弱,因為它們將由視圖控制器自動保留。

原始類型不在堆上分配,也不使用強或弱

Atomicity與線程有關,對於新手而言是一個非常高級的主題。 然而,簡短的回答是iOS屬性總是被聲明為非原子的。 這里有一些關於它的更詳細的信息

弱/強關鍵字與ARC的內存管理有關,可以防止所謂的保留周期。 對於新手來說,這也可能是一個棘手的概念,但是高級概述是當兩個對象彼此具有強引用時發生保留循環,因此ARC不會破壞任何對象。 這是一種內存泄漏的形式,因為您可能有一個不再使用但仍占用內存的對象。 通過將屬性聲明為弱,它將確保它不會自動銷毀,只要某些東西仍然具有強烈的引用。 例如,假設您有一個包含幾個對象的數組。 其中兩個對象具有很強的相互引用。 然后,陣列失去其所有者並被銷毀。 但是,該數組中指向彼此的兩個對象不會被破壞,因為它們具有強引用。 因此,你有兩個你無法訪問的對象,因為擁有的數組被銷毀,但它們仍然占用內存。

暫無
暫無

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

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