发布一个ObjectiveC初学者级别的问题。
当我使用属性声明对象时,我看到可以通过2种方法访问特定属性。
@property(nonatomic,retain) NSString *str;
@synthesize propertyname
例如:@synthesize str;
self
例如:self.str;
那么这两种方法有什么区别,哪种更合适。谢谢你的时间
最佳答案
@synthesize
不能用于访问属性。这是一个编译器指令。使用@property
声明属性时,编译器会自动生成访问器方法(getter和setter)。在旧版本中,必须显式使用@synthezie
来让编译器知道它必须生成访问器方法。对于较新的版本,则不需要。编译器自动生成访问器方法。
如果您已将该属性声明为
@property (nonatomic, retain) NSString *str;
如果不使用@synthesize,则ivar将为_str,而getter将为
-(NSString)str
然后是二传手
-(void)setStr:(NSString *)newStr
如果您专门提到@synthesize为
@synthesize str = _myStr
然后,该ivar将是
_mystr
而不是_str
。因此,为了访问属性str,您必须使用
self.str
或[self str]