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

【Objective-C】OC中点语法的内存管理

2014-02-11 14:52 309 查看
下面来一起学习一下点语法的内存管理 (一):赋值 assign:直接赋值,默认
retain:保留对象
copy:拷贝对象
示例代码: @property (assign)Person *person; @synthesize person=_person; 当使用retain的时候为: -(void)setPerson:(Person *)person{
if(_person!=person){         [_person release];         _person=[person retain];     } }
当使用copy的时候(必须对象要实现copy协议)
-(void)setPerson:(Person *)person{     if(_person!=person){         [_person release];         _person=[person copy];     } }
(二):读写性 readwrite:生成getter,setter方法,默认
readonly:生成那个getter方法
示例代码: -(void)setPerson:(Person *)person{
@synchronized(self){         _person=person;     } } //设置方法
(三):原子性 atomic:多线程环境下 ,存在线程保护,默认
noatomic:多线程环境下,不存在线程保护
示例代码: -(Person *)person{
@synchronized(self){         return _person;     }     }
区别: assign:直接赋值,只是一个别名而已 retain:保留该对象,两个对象指向了同一个位置 copy:开辟了一个新的内存空间,分别指向了不同的内存位置,引用计数分别为1, 不过与之前的对象没有任何关系(特殊情况除外)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息