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

 

//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;

 

posted @ 2014-12-20 01:23  M了个WX  阅读(303)  评论(0编辑  收藏  举报