繁体   English   中英

_iVar和@property?

[英]_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM