根据我的阅读,@ property和@synthesize用于告诉编译器为我们类的各种属性生成getter和setter。
所以当我看到一个Apple示例的源代码GKTank时,我很困惑,它只对整个游戏使用一个类(除了app委托),并且该类的大部分属性仍然在@中定义property()并且被合成,即使没有其他类会尝试获取/设置它们。我在这里误解了什么?
由于
答案 0 :(得分:5)
使用属性通常是一种很好的做法,因为合成的setter在内存管理方面会做正确的事情(保留或简单地分配,具体取决于你如何配置你的属性)。
它们也是一种在类的公共接口与内部实现之间提供清晰分离的方法。
This article为何时以及为何使用属性和点符号提供了一些很好的建议。
答案 1 :(得分:1)
它还允许您使用点语法:
self.myProperty =某事;
答案 2 :(得分:0)
我不知道那个具体的例子。但是,通过访问器访问同一类的成员而不是直接引用成员被认为是好的方式。通过将成员封装为具有getter和setter的属性,该字段的实现细节可能会发生变化,而这些细节会被getter / setter抽象出来。 此外,类的属性声明允许您使用。-notation访问属性,因此如果您想使用该表示法,它可能会导致更一致的代码。