您的位置:首页 > 运维架构

OC-@property内存管理中的参数

2014-12-20 01:23 218 查看
//1.生产get与set方法的声明

//2.生成get与set方法的简单实现

/* - (void)setCar:(Car *)car{

_car = car;

}

- (Car *)car{

return _car;

}

*/

//3.若果你没有声成名相对象的成员变量,那么他会自动生成一个_开头的私有成员变量,这个成员变量分类不能用,子类不能用,如果想用的话,再重新定义一下成员变量

//这个@property自动生成的_开头的成员变量,是私有变量,私有变量是子类能继承,但是不能访问,同理,分类也不行,(@property int age;)

//如果重新定义一个int_age,子类还是不能访问,但是此时分类可以访问,只要重新定义一个,不管是什么类型的,分类都可以访问,{int _age;}

//@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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐