就像我理解的那样,@synthesize实际上是在生成Getters和Setters。但是什么是@property呢?它只是为那个很酷的@synthesize魔术函数设置参数吗?

有帮助吗?

解决方案

你在头文件

中写@property
@property float value;

相当于:

- (float)value; 
- (void)setValue:(float)newValue; 

它获取其他类的信息,您的类具有此方法

@synthesize phisicaly在类实现中创建这些方法

其他提示

@property 将名称声明为属性。这意味着,它可以通过点语法( object.value )访问。

@synthetize 可以看作是一个宏,它创建了getter和setter方法。知道您可以覆盖这些方法很有用,即使您键入了 @synthetize

@property 声明getter和/或setter

@synthesize 实现它们。

有一个常见的误解是,为了实现使用@property指令创建的setter和getter,需要@synthesize指令,但事实并非如此。使用不带@synthesize的@property指令仍会生成setter / getters,并允许您使用点表示法。但是,省略@synthesize指令将导致编译器生成具有前导下划线字符的相应实例变量,例如属性myVar将具有_myVar的实例变量。

使用前导下划线是一种常见的约定,允许您区分属性和实例变量。属性和实例变量共享同一名称也很常见,这是@synthesize默认执行的操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top