@synthesize

Posted 小楼一夜听春雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@synthesize相关的知识,希望对你有一定的参考价值。

@synthesize的作用是生成实例变量并用这个实例变量生成对应的getter,setter,当声明一个属性,并且没有重写getter,setter方法时,编译器会自动生成实例变量及getter、setter,例如声明

@property (nonatomic, assign) NSInteger age;

编译器编译时会自动添加 @synthesize age = _age;

 

有一点需要注意,当只重写getter和setter其中的一个方法时,编译器会帮你生成实例变量,如果同时重写了getter和setter方法,编译器则不会自动生成实例变量,需要手动生成,写法是在@implementation里添加 @synthesize 属性名 = 实例变量名。(例 @synthesize age = _age;

如果只写 @synthesize 属性名;则表示实例变量名跟属性名一样(例 @synthesize age)。

 

如果不希望编译器自动合成getter,setter,可以用 @dynamic 属性名;这时候需要自己添加实例变量及setter,getter。

 

我们代码里使用@synthesize的情况一般为当我们既重写了getter又重写了setter,此时需要用synthesize来帮我们生成实例变量。另外一种情况是给实例变量重命名,比如说我们不想用默认的下划线+属性的命名,可以写成@synthesize age = myAge;此时属性age的实例变量的名字就变成了myAge


 

以上是关于@synthesize的主要内容,如果未能解决你的问题,请参考以下文章