首页 > 代码库 > OC-@property内存管理中的参数
OC-@property内存管理中的参数
//1.生产get与set方法的声明
//2.生成get与set方法的简单实现
/* - (void)setCar:(Car *)car{
_car = car;
}
- (Car *)car{
return _car;
}
*/
//3.若果你没有声成名相对象的成员变量,那么他会自动生成一个_开头的成员变量
//@property 参数分为4类
/*
1.与set方法内存管理相关参数
retain: 要生成符合内存管理原则的set方法(应用与对象类型),(只在setter中release旧值,retain新值)
- (void)setCar:(Car *)car{
if (_car != car){
[_car release];//release旧值
_car = [car retain];//retain新值
}
assign: 直接赋值,(对象类型,基本数据类型)
copy : (后面讲解)
*/
//2.多线程相关
//nonatomic: 不生成多线程相关代码,使用这个就可以了(效率高一点)
//atomic:生成多线程相关代码(不写默认是这种方式)
//实际开发中,只要是对象类型的@property都写成下面
//3.是否要生成set与get方法
//readwrite: 可读可写属性,同时生成set与get方法
//readonly : 只读属性,只生成get方法
//4.set与get方法名称相关的参数
//setter:设置生成的set方法名称
//getter:设置生成的get方法名称
@property (nonatomic,retain) Car * car;
@property (nonatomic,retain)NSString * name;
@property (nonatomic,assign)int age; //int float double char
@property (nonatomic,assign)int weight;
@property (nonatomic,assign,readonly)int idCard;
@property (nonatomic,assign,setter = abc:,getter = zhuanghuimei)int height;
/**
[p abc:100];
int b = [p zhuanghuimei];
p.height = 100;//[p abc:10];
NSLog(@"he %d",p.height);//[p zhuanghuimei];
//p 0
*/
// 改变set与get方法名称很多都是用在BOOL类型的变量
@property (nonatomic,assign,setter = isDeid:,getter = isDeid)BOOL isDeid;
//因为上面这个自动生成的是
//-(void)setIsDeid:(BOOL)isDeid;但是以前也说了,BOOL类型都是is开头,所以才用这个方法来设置is开头的,如下:
//- (void)isDeid:(BOOL)isDeid;
OC-@property内存管理中的参数