@property 4.4之前
1)@property + 手动实现
2)@property int age; + @synthesize age;//get和set方法的声明和实现都帮我们做了
3)@property int age; +@synthesize age = _b;
@property 4.4之后(增强)
.h
@property int age;
1)生成_age(是私有的实例变量)
2)生成_age的set和get方法的声明
3)实现_age的set和get方法
@property参数
三类 7个
原子性 atomic nonatomic
读写 readwrite readonly
set方法处理 assign retain copy
1)多线程管理(苹果在一定程度上屏蔽了多线程操作)
nonatomic:高性能,一般使用这个
atomic:低性能,默认
2)是否要生成set方法(若为只读属性,则不生成)
readonly:只读,只会生成getter的声明和实现
readwrite:默认的,同时生成setter 和 getter的声明和实现
3)set 和 get 方法名称
1> assign 直接赋值
//什么时候使用assign?
//实例变量是基本数据类型的时候
-(void)setCar:(Car*) car{
_car = car;
}
验证:assign
2> retain release旧值 retain新值(适用于OC对象类型)
//什么时候使用retain ? 在一个类中有关联其他对象的时候,这个对 象的就需要retain
//格式:@property (nonatomic,retain)
-(void)setCar:(Car*) car{
if(_car != car){
[_car release];
-car = [car retain];
}
}
3> 修改set和get方法的名称,主要用于BOOL类型。因为返回布尔类型的方法名一般以is开头,修改名称一般用在布尔类型中的gette
@property (nonatomic,assign,setter = isVip:,getter = isVip)BOOL vip;
相当于把 [p setVip: ]----->[p isVip: ]
把 [p vip]---------->[p isVip]
*/
|
|