簡體   English   中英

屬性和實例變量之間有什么區別?

[英]What's the difference between a property and an instance variable?

在實現文件中,所有屬性都表示為私有。
那么這些之間有什么區別:

  1. MyObj.m

@interface MyObj ()

@property (nonatomic, strong) NSString *name;

@end

@implementation MyObj

@synthesize name = _name;

// Some other codes to use "name" like self.name or _name

@end


2. MyObj.m


@implementation MyObj
{
    NSString *_name;
}

// Some other codes to use _name

@end

在第一個示例中,您將為您創建訪問器

- (NSString *)name;
- (void)setName:(NSString *)name;

另請注意,在較新版本的Xcode中,@ @synthesize是隱式的。

在第二個示例中,您僅創建了一個ivar。

除非您有特殊情況,否則通常最好使用訪問器,因為將來會為您提供更大的靈活性。

我建議您始終對所有類的數據成員使用@property 它們內置了內存管理,因此您不必擔心。 屬性還為使用該類的對象添加了語法糖。 所以,如果有一個obj類的MyObj我可能只是做

obj.name = @"brianSan";

這將與

[obj setName: @"brianSan"];

另外,可以通過obj.name來訪問obj name ,這與[obj name];

當您必須訪問對象的對象內的方法時,查看obj.prop.subprop.subsubprop變得比[[[obj prop] suprop] subsubprop]更容易。

暫無
暫無

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

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