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;
//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;
相关文章推荐
- OC_语法入门_day5_内存管理_计数器/set方法/property的参数/循环引用/自动释放池
- 黑马程序员26——OC之内存管理(property参数)
- OC加强day1-内存管理的范围、MRC与ARC、property参数,retain死循环、NSSstring简解、自动释放池、堆栈等得存储方式
- OC @property的内存管理
- OC基础—内存管理之@property及其参数(补充新知识:循环引用和@class)
- OC第五课(@class与#import)property参数使用
- OC学习笔记五 内存管理(property 参数)
- OC基础day5-点语法、property、编译器指令、id万能指针、类与类的判断、判断对象是否响应指定的方法、判断类中是否有这个方法、参数方法与响应、构造方法、synthesize
- OC基础--内存管理中的@property关键字以及其参数
- 黑马程序员--OC自学笔记---07内存管理、@property参数、@class、autorelease
- ARC内存管理,防止内存泄漏,带retain、assign、strong、weak、nonatomic参数property和synthesize应用总结
- 黑马程序员--OC中property的参数解析
- 黑马程序员--ios基础--oc内存管理--@property参数、循环引用、autorelease
- oc内存管理代码规范和property于对象变量的用法
- 黑马程序员——OC——set方法内存管理和property
- 黑马程序员-内存管理之set方法内存管理, property参数,循环引用。
- OC基础-内存管理-@property以及它的参数
- oc -7 内存管理 相关参数 循环引用
- [黑马程序员]14[OC语言]OC内存管理部分学习笔记总结
- 黑马程序员——OC语言基础篇---内存管理