可能重复:
@property @synthesize
我对这两种方法有点困惑,有人可以向我解释一下吗?
他们做什么,为什么他们比只使用 -(void)variable 更好;和 -(void)variable{}?
可能重复:
@property @synthesize
我对这两种方法有点困惑,有人可以向我解释一下吗?
他们做什么,为什么他们比只使用 -(void)variable 更好;和 -(void)variable{}?
他们在做什么
它们分别声明和实现属性访问器方法(getter 和 setter)。@property
声明,@synthesize
告诉编译器为声明的方法发出一个自动生成的实现。
为什么它们比仅使用 -(void)variable 更好;和 -(void)variable{}?
因为它们更短,所以更简洁并使代码更具可读性。此外,它们本身没有错误——如果你要编写一堆访问器方法,我相信你最终会错过一些东西,而且你不能看在上帝的份上,知道一个神秘的分段错误来自哪里。声明的属性不会发生这种情况(因此它们被称为)。
一个小警告是旧的 Objective-C 编译器不支持声明的属性。可能是这样的情况(尽管可能性很小),有一天您需要使用旧的编译器编译代码,并且由于这种语法,这是不可能的。但同样,这不太可能发生。
这只是为变量定义标准 getter/setter 方法的一种更方便的方法,因为一遍又一遍地编写简单的标准 getter 和 setter 方法可能是一个真正的痛苦......并且属性提供了一种简单的内存管理方法(例如强的、非原子的等等)。