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

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

原创

jiangqq900826 ©著作权

文章标签 内存 对象 内存管理 objective-c 点语法 文章分类 移动开发

©著作权归作者所有:来自51CTO博客作者jiangqq900826的原创作品,请联系作者获取转载授权,否则将追究法律责任

下面来一起学习一下点语法的内存管理

(一):赋值

  •           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,

        不过与之前的对象没有任何关系(特殊情况除外)

  • 收藏
  • 评论
  • 举报
提问和评论都可以,用心的回复会被更多人看到 评论
发布评论
相关文章

举报文章

请选择举报类型

内容侵权 涉嫌营销 内容抄袭 违法信息 其他

具体原因

包含不真实信息 涉及个人隐私

补充说明

0/200

上传截图

格式支持JPEG/PNG/JPG,图片不超过1.9M

已经收到您得举报信息,我们会尽快审核