[英]_iVar and @property?
我看到有人写这样的代码
@interface SomeClass:<NSObject>{
NSString * _iVar;
}
@property(nonatomic,retain)NSString *iVar;
并在工具文件中
@synthesize iVar = _iVar;
但是我总是喜欢这样写代码:
@interface SomeClass:<NSObject>
@property(nonatomic,retain)NSString *iVar;
并在工具文件中
@synthesize iVar = _iVar;
它们都工作正常,我可以使用实例someClass来获取iVar“ someClass.ivar”。我只知道为什么吗?
现在,您甚至不必再合成iVar。 最新的Xcode将自动为每个属性创建一个支持实例变量,该属性名称以下划线为前缀。
在Objective-C中,当您通过“。”使用任何东西时。 (点语法),它正在访问属性。 您已经声明并合成了名称为iVar的属性,因此可以使用someClass.iVar对其进行访问。
声明属性时,将自动使用它创建一个变量。 因此,即使您不创建变量,该变量也将存在。
为了避免歧义,人们正在使用不同的名称来创建属性和iVar。 因此,他们可以识别是否正在使用变量或正在使用属性。 在这种情况下,人们会让编译器以低级方式将特定变量与属性相关联:
@synthesize iVar = _iVar;
如果要直接在类外部访问变量而不是属性,则应使用“->”(箭头语法)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.