您的位置:首页 > 职场人生

黑马程序员——OC——set方法内存管理和property

2014-06-29 08:09 411 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
set方法:

代码规范:

 1> 基本数据类型:

- (void)setAge:(int)age
{
_age = age;
}


 2> OC对象类型
- (void)setCar:(Car *)car
{
// 1.先判断是不是新传进来对象
if ( car != _car )
{
// 2.对旧对象做一次release
[_car release];

// 3.对新对象做一次retain
_car = [car retain];
}
}

dealloc方法的代码规范

 1> 一定要[super dealloc],而且放到最后面

 2> 对self(当前)所拥有的其他对象做一次release
- (void)dealloc
{
[_car release];
[super dealloc];
}


property:



 1.set方法内存管理相关的参数

>  retain : release旧值,retain新值(适用于OC对象类型)

> assign : 直接赋值(默认,适用于非OC对象类型)

>  * copy   : release旧值,copy新值

 

 2.是否要生成set方法

>  readwrite : 同时生成setter和getter的声明、实现(默认)

>  readonly  : 只会生成getter的声明、实现

 

 3.多线程管理

>  nonatomic : 性能高 (一般就用这个)
> atomic    : 性能低(默认)

 

 4.setter和getter方法的名称
@property (getter = isRich) BOOL rich;   //BOOL b = p.isRich;  布尔类型 一般以is开头
@property (getter = abc, setter = setAbc:) int weight; //只影响方法名,不影响成员变量名

@interface Person : NSObject

// 返回BOOL类型的方法名一般以is开头
@property (getter = isRich) BOOL rich;

@property (nonatomic, assign, readwrite) int weight;
//同时生成setter和getter的声明、实现(默认)
@property (readwrite, assign) int height;
//assign : 直接赋值(默认,适用于非OC对象类型)
@property (nonatomic, assign) int age;
//*name是一个字符串对象 所以用retain
@property (retain) NSString *name;
@end


----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: