发布 ObjectiveC 初级问题。 当我使用属性来声明对象时,我发现我们可以通过两种方法访问特定属性。
@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
setter 将是
-(void)setStr:(NSString *)newStr
如果您特别提到@synthesize
@synthesize str = _myStr
那么 ivar 将是 _mystr
而不是 _str
。
因此,为了访问属性 str,您必须使用 self.str
或 [self str]
关于ios - 哪个最好 :calling a property by @synthesize or by using self keyword,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26966014/