[英]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.