[英]What's the difference between instance variable and temporary variable referenced in block?
[英]What's the difference between a property and an instance variable?
在實現文件中,所有屬性都表示為私有。
那么這些之間有什么區別:
@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.