gpt4 book ai didi

objective-c - @synthesize 的隐式数据成员 - 好习惯还是坏习惯?

转载 作者:行者123 更新时间:2023-12-03 16:59:42 25 4
gpt4 key购买 nike

今天,我收到了 a long list of coding guidelines 的链接,宣称是“代码戒律”。读得很好,对我来说充满了新的见解。在列表中,沿着滚动条的 25% 处,我发现了一些新东西:隐式数据成员创建。

虽然我读过或看过的关于 Objective-C 的所有教程、书籍和视频总是执行 NSNumber *number | @property NSNumber *number | @synthesize number 的三元组。 ,这些命令现在告诉我我可以简单地省略第一步(接口(interface)中的数据成员声明),因为 @synthesize 将动态创建一个。说什么!?

带着一点难以置信,我删除了几个数据成员声明,​​事实上,我的应用程序仍然像魅力一样工作。减少打字,减少阅读,减少拼写错误的机会。

对我来说听起来像是三赢,但这真的是好的做法吗?

我问这个问题纯粹是出于怀疑,所有的教程、书籍和视频都在教错误的类(class),至少是太多了,或者我在类里面没有集中注意力......

干杯,EP。

编辑:虽然我从链接的帖子中复制了“数据成员”这一表达方式,但更常见的是用“ivar”一词来描述它,为了方便搜索,在这里使用它是一个很好的选择。这也解决了我以前对 property/ivar/member 命名的困惑:)。

最佳答案

综合实例变量是现代 Objective-C 2.0 运行时的一个功能。这意味着它们可以在 x86_64、ARM 上以及从 Xcode 3.2 开始的 iPhone 模拟器上使用。这正是您所建议的意思 - 您可以省略 ivar 声明,@synthesize 行将为您生成 ivar。这样做的性能与显式声明 ivar 完全相同,但它有一个非常重要的好处,即不会用私有(private)实现细节污染您的头文件。

关于objective-c - @synthesize 的隐式数据成员 - 好习惯还是坏习惯?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4753200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com