首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我要声明两次属性?或者我有吗?

为什么我要声明两次属性?或者我有吗?
EN

Stack Overflow用户
提问于 2013-02-28 20:57:16
回答 2查看 104关注 0票数 0

对于这种无用的帖子标题,很抱歉,但由于我不是很确定我在做什么,这是我能想到的最好的。

在我的头文件中,它看起来像这样

代码语言:javascript
运行
复制
@interface RootViewController : UITableViewController {
NSMutableArray *eventsArray;    
}

@property (nonatomic, retain) NSMutableArray *eventsArray;

@end

这并不是所有的属性,但为了简单起见,我删除了所有属性。

我遵循苹果开发者的指南来做这件事。似乎指南并没有完全更新,因为它告诉我要合成属性,我不应该再这样做了,对吧?

不管怎么说,为什么会这样呢?对于我这个初学者来说,似乎我声明了两次属性?或者我在那里的第一排做其他的事情?

EN

Stack Overflow用户

发布于 2013-02-28 21:11:23

对我来说,

是一个初学者,似乎我声明了两次属性?或者我在那里的第一排做其他的事情?

属性和支持它的实例变量(如果有)是两个不同的东西。属性实际上只是类提供某些访问器方法的承诺。因此,必须分别声明property和ivar这一事实并不奇怪。然而,事实上,大多数属性都是由一个具有相关名称的ivar支持的,分别编写和维护这两个属性是一件很繁琐的事情。因此,Apple在编译器中添加了ivar合成,以便编译器为任何还不存在ivar的合成属性生成ivar。此外,由于合成访问器是迄今为止最常见的,而且即使属性标记为@synthesize,编译器也会使用您提供的任何访问器,因此这成为默认设置,因此您不再需要编译器指令。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15136143

复制
相关文章

相似问题

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