簡體   English   中英

ARC:成員變量和屬性之間有什么區別?

[英]ARC: what's the difference between a member variable and property?

我有一個在我的UIViewController中使用的NSArray對象。 我可以將其聲明為ivar或屬性。 兩種方法都有什么優勢(考慮到我使用的是ARC)?

選項1:

@interface MyViewController {
    NSArray *_myArray;
}
@end

選項2:

@interface MyViewController
    @property (strong, nonatomic) NSArray *myArray;
@end

屬性和ivars在概念上完全不同。

屬性代表代碼的邏輯組成部分。 它可能但不需要由ivar支持。 它可以在運行時 動態生成 計算(如視圖的-frame ),等等。

ivar是保存一些數據的實際分配的內存塊。

如果正確使用屬性,則開箱即用即可獲得不錯的功能,例如KVC / KVO合規性。 由於這個和其他原因,通常認為是一種好習慣,尤其是在現代運行時,以屬性的形式聲明所有公共接口,並在適當時在內部使用ivars(經常使用@synthesize )對其進行支持。

就個人而言,我也喜歡將屬性用於私有數據,既可以方便以后在需要時公開(只需將聲明移到標頭!),也可以輕松提供屬性(和setter /變數),而不是依賴簡單的ivar。

自從您提到ARC以來,我還沒有使用太多(但是),但是我認為只要您正確地聲明了屬性,它就不會有太大的不同。

暫無
暫無

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

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