【Objective-C】OC中点语法的内存管理
下面来一起学习一下点语法的内存管理
(一):赋值
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,
不过与之前的对象没有任何关系(特殊情况除外)
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。