@synthesize的隐含数据成员 - 良好的做​​法或坏习惯?

epo*_*gee 1 cocoa objective-c

今天,我得到了一长串编码指南的链接,宣称是"代码诫命".很好的阅读,并对我充满了新的见解.在列表中,在滚动条的25%左右,我遇到了一些新内容:隐式数据成员创建.

虽然我读过或看过的关于Objective-C的每个教程,书籍和视频总是执行三重奏NSNumber *number | @property NSNumber *number | @synthesize number,但这些命令现在告诉我,我可以简单地省略第一步(界面中的数据成员声明),因为@synthesize将创建一个苍蝇 说什么!?

有点不相信我删除了几个我的数据成员声明,​​事实上,我的应用仍然像一个魅力.减少打字,减少阅读,减少错别字的机会.

对我而言听起来像是一种双赢,但这是不是很好的做法?

我纯粹不相信所有的教程,书籍和视频都在教导错误的教训,至少过多,或者我在课堂上没有注意到......

干杯,EP.

编辑:虽然我从链接的帖子中复制了表达"数据成员",但它更常用"ivar"这个词来描述,这里只是一个很好的搜索友好性.这也解决了我以前对property/ivar/member命名:)的困惑.

Lil*_*ard 6

合成的实例变量是现代Objective-C 2.0运行时的一个特性.这意味着它们可以在x86_64上,ARM上,以及Xcode 3.2上的iPhone模拟器上使用.这意味着你的建议 - 你可以省略ivar声明,@synthesize行将为你生成ivar.其性能与明确声明ivar完全相同,但它具有非私有实现细节不会污染头文件的重要好处.