据我了解,@synthesize 实际上正在生成 Getter 和 Setter。但是@property 然后在做什么呢?它只是为那个很酷的@synthesize 魔术函数设置参数吗?
问问题
3563 次
4 回答
9
@property
将名称声明为属性。这意味着,它将可以通过点语法 ( object.value
) 访问。
@synthetize
可以看作是一个宏,它创建了 getter 和 setter 方法。知道您可以覆盖这些方法是很有用的,即使您键入了这些方法@synthetize
。
于 2009-04-30T11:34:45.537 回答
8
你在头文件中写@property
@property float value;
相当于:
- (float)value;
- (void)setValue:(float)newValue;
它获取其他类的信息,您的类具有此方法
@synthesize phisicaly 在类实现中创建这些方法
于 2009-04-30T11:17:10.883 回答
4
@property
声明 getter 和/或 setter
@synthesize
实现它们。
于 2009-04-30T15:07:12.063 回答
1
有一个常见的误解,即需要 @synthesize 指令才能实现使用 @property 指令创建的 setter 和 getter,但事实并非如此。在不使用 @synthesize 的情况下使用 @property 指令仍会生成 setter/getter 并允许您使用点表示法。但是,省略@synthesize 指令将导致编译器生成带有前导下划线字符的相应实例变量,例如属性myVar 将具有_myVar 的实例变量。
使用前导下划线是一种常见约定,可让您区分属性和实例变量。属性和实例变量共享相同名称也很常见,这是 @synthesize 默认所做的。
于 2014-07-14T11:10:14.817 回答