ios - 哪个最好 :calling a property by @synthesize or by using self keyword

标签 ios objective-c properties self synthesize

发布 ObjectiveC 初级问题。 当我使用属性来声明对象时,我发现我们可以通过两种方法访问特定属性。

@property(nonatomic,retain) NSString *str;
  1. 使用@synthesize propertyname 例如: @synthesize str;

  2. 通过使用关键字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/

相关文章:

ios - 在 UITextview 中复制 NSDictionary 值

ios - iOS CoreData fetchRequest具有顺序列变音符号敏感

ios - 如何在 UITableView 中使用 UIView 实现动态单元格高度和图像高度?

c# - 通过 Javascript 设置 C# 属性值

java - 未找到 Log4J 属性文件

iphone - 重新启动应用程序时如何删除跳板图标上的角标(Badge)?

ios - 我们可以使用适用于 iOS 和 Android 的 Abode Creative SDK 在 Adob​​e Assets 中上传照片吗?

objective-c - iPhone 拿着 "upwards"或放在 table 上

ios - 在 objective-c 的 tableViewController 中显示 NSMutabelArray

java - 写入 java 包内的属性文件