@property& @ synthesize

时间:2012-11-04 23:09:52

标签: objective-c ios

  

可能重复:
  @property @synthesize

我对这2种方法有点困惑,有人可以向我解释一下吗?

他们做了什么,为什么他们比仅使用 - (void)变量更好;和 - (void)变量{}?

2 个答案:

答案 0 :(得分:0)

这是为变量定义标准getter / setter方法的一种更方便的方法,因为一遍又一遍地编写简单的标准getter和setter方法可能是一个真正的痛苦...而且属性提供了一种简单的方法记忆管理(例如强,非原子等)。

答案 1 :(得分:0)

  

他们做了什么

他们分别声明和实现属性访问器方法(getter和setter)。 @property声明,@synthesize告诉编译器为声明的方法发出自动生成的实现。

  

为什么它们比仅使用 - (void)变量更好;和 - (void)变量{}?

因为它们更短,更简洁,使代码更具可读性。而且,他们自己也没有错误 - 如果你要写一堆存取方法,我相信你最终会错过一些东西而你不能因为上帝的爱而告诉神秘的分段错误来自何处。声明属性不会发生这种情况(因此调用它们)。

一个小小的警告是旧的Objective-C编译器不支持声明的属性。可能是这种情况(虽然它几乎没有机会)有一天你需要用旧的编译器编译代码,因为这种语法是不可能的。但同样,这种情况不太可能发生。