您的位置:首页 > 移动开发 > Objective-C

勤于思考:Objective-C特性的扩展

2014-05-14 15:24 288 查看
赋值

assign:直接赋值、默认

@interface Car : NSObject
{
NSString *_name;
}

@property (assign,nonatomic) NSString *name;

- (void) setName:(NSString *)name
{
_name = name;
}


retain :保留对象

@interface Car : NSObject
{
NSString *_name;
}

@property (retain,nonatomic) NSString *name;

- (void) setName:(NSString *)name
{
if (_name != name) {
[_name release];
_name = [name retain];
}
}


copy: 拷贝对象

@interface Car : NSObject
{
NSString *_name;
}

@property (copy,nonatomic) NSString *name;

- (void) setName:(NSString *)name
{
if (_name != name) {
[_name release];
_name = [name copy];
}
}


三者的区别

assign:直接赋值,只是一个别名而已

retain:保留的这个对象,两个对象指向了同一个位置

copy:开辟了新的内存空间,分别指向了不同的内存位置,引用技术分别为l,

与之前的对象完全脱离关系。这里我们尤其需要注意,某些时候copy的作用相当于retain。

读写性

readwrite:可读可写、默认

readonly: 只读

原子性

atomic:多线程环境下,存在线程保护

noatomic: 多线程环境下,不存在线程保护
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: