1.生成get与set方法的声明
2.生成get与set方法的简单实现
3.如果你没有声明相对应的成员变量,那么它会自动生成一个_开头的成员变量(私有变量)
@property的参数类型
1.与set方法内存管理相关参数
1)retain:要生成符合内存管理原则的set方法(应用于对象类型);
2)assign:直接赋值(对象类型,基本数据类型);
3)copy
2.多线程相关
1)nonatomic:不生成多线程管代码,使用这个就可以(效率高一点);
2)atomic:生成多线程管代码(不写默认是这种方式)。
3.是否要生成set与get方法
1)readwrite
2)readonly
4.set与get方法名称相关的参数
1)setter:设置生成的set方法名称
2)getter:设置生成的get方法名称
例如:@property (nonatomic, assign) int height;
Xcode自动生成
对应的set方法:- (void)setHeight:(int)height;
get方法:- (int)height; // special
而换做为setter方法时:
@property (nonatomic, assign, setter = fun:) int height;
调用set方法时,[p fun:100];
调用get方法时,NSLog(@"height is", p.height); //未改变的get方法;
而换做getter方法时:
@property (nonatomic, assign, setter = fun:, getter = getFun) int height;
调用时:[p fun:100];
int b = [p getFun];
注释:
其中p.height = 100; //实质是调用set方法
NSLog(@"height is", p.height); //实质是调用get方法
总结:
改变set与get方法名称多用于BOOL类型的变量;
@property (nonatomic, assign, setter = isDied:, getter = isDied) BOOL isDeid;
[p isDied:NO]; //set
[p isDied]; //get
p.isDied = YES; //set
BOOL result = p.isDied; //get