设为首页 加入收藏

TOP

[Objective-C]OC中点语法的内存管理
2014-11-23 18:02:43 来源: 作者: 【 】 浏览:9
Tags:Objective-C 中点 语法 内存 管理

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

(一):赋值

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

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇[Objective-C]OC中文件读取类(NSF.. 下一篇[Objective-C]OC中自动释放池的基..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: