【Objective-C】OC中点语法的内存管理
下面来一起学习一下点语法的内存管理 (一):赋值
示例代码: @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]; } }(二):读写性
示例代码: -(void)setPerson:(Person *)person{ @synchronized(self){ _person=person; } } //设置方法
(三):原子性
示例代码: -(Person *)person{ @synchronized(self){ return _person; } }
区别: assign:直接赋值,只是一个别名而已 retain:保留该对象,两个对象指向了同一个位置 copy:开辟了一个新的内存空间,分别指向了不同的内存位置,引用计数分别为1, 不过与之前的对象没有任何关系(特殊情况除外) |