首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_iVar和@property?

_iVar和@property?
EN

Stack Overflow用户
提问于 2013-03-02 14:05:59
回答 2查看 75关注 0票数 0

我看到有人写了这样的代码

代码语言:javascript
复制
@interface SomeClass:<NSObject>{
       NSString * _iVar;

}

代码语言:javascript
复制
@property(nonatomic,retain)NSString *iVar;

和在实现文件中

代码语言:javascript
复制
@synthesize iVar = _iVar;

但我总是喜欢这样写代码:

代码语言:javascript
复制
@interface SomeClass:<NSObject>
@property(nonatomic,retain)NSString *iVar;

和在实现文件中

代码语言:javascript
复制
@synthesize iVar = _iVar;

它们都工作得很好,我可以使用一个实例someClass来获取iVar "someClass.ivar".I,知道为什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-02 14:12:16

现在你甚至不再需要合成iVars了。最新的Xcode将自动为每个属性创建一个支持实例变量,并在属性名称前加上下划线。

票数 0
EN

Stack Overflow用户

发布于 2013-03-02 14:19:22

在Objective-C中,当你使用任何东西的时候。(点语法),它正在访问属性。您已经声明并合成了一个名为iVar的属性,因此可以使用someClass.iVar访问它。

声明属性时,会自动使用该属性创建一个变量。所以,即使你不创建一个变量,它也会存在。

为了避免歧义,人们创建了具有不同名称的属性和iVar。因此,它们可以识别是否正在使用变量或属性。在这种情况下,人们以低级方式让编译器知道某个特定变量与某个属性相关联:

代码语言:javascript
复制
@synthesize iVar = _iVar;

如果你想直接在类的外部访问变量而不是属性,你应该使用"->“(箭头语法)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15171368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档