@property和@synthesize:为什么两者兼而有之?

时间:2009-11-19 04:34:58

标签: properties compiler-directives

我一直在攀登X-code的学习曲线大约两个月了。我理解@ property / @ synthesize指令的用途,但似乎总是在.h文件中声明属性,然后在.m文件中合成它们有点多余。

为什么编译器需要两个指令?如果它们总是一起使用,那么它们中的其中一个在技术上是多余的吗?

提前感谢您对此主题的任何见解。

John Doner

3 个答案:

答案 0 :(得分:3)

在您的类定义中使用@property (...) foo关键字。 如果您提供适当的@synthesize,则无需在实施文件中使用getters/setters关键字。

示例:

@property int SomeInt;

---

-(int)SomeInt {
  return _someInt;
}

-(void)setSomeInt:(int)newValue {
  _someInt = newValue;
}

或者您可以使用@synthesize foo通知编译器为您生成getters/setters@dynamic通知编译器这些方法在运行时可用 - 都在实现文件中

Objective-C中的属性背后有更多魔力,read up on them at Apple Reference Library

答案 1 :(得分:1)

这样你就可以分割实现和声明。看起来很漂亮。

答案 2 :(得分:0)

嗯,你不能在类别实现中使用@synthesize,所以这可能是一个原因。