zoukankan      html  css  js  c++  java
  • 理解assign,copy,retain变strong

    举个例子:

         NSString *houseOfMM = [[NSString alloc] initWithString:'装梵几的三室两厅']; 

    上面一段代码会执行以下两个动作: 1 在堆上分配一段内存用来存储@'装梵几的三室两厅' ,比如:内存地址为0X1111 内容为 '装梵几的三室两厅' 2 在栈上分配一段内存用来存储houseForWife,比如:地址为0XAAAA 内容自然为0X1111 
    下面分别看下(assign,retain,copy): 1.assign的情况:NSString *myHouse = [houseOfMMassign]; 此时myHousehouseOfMM完全相同,地址都是0XAAAA ,内容为0X1111 ,即myHouse只是houseOfMM的别名,对任何一个操作就等于对另一个操作。因此retainCount不需要增加.(同进同出,关系好,一把钥匙,给我拿着) 2.retain的情况:NSString * myHouse = [houseOfMMretain]; 此时myHouse的地址不再为0XAAAA,可能为0XAABB,但是内容依然为0X1111.因此myHousehouseOfMM都可以管理'装梵几的三室两厅'所在的内存。因此 retainCount需要增加1.(有些独立,各自进出,两把钥匙) 3.copy的情况:NSString * myHouse = [houseOfMMcopy];

    此时会在堆上重新开辟一段内存存放@'装梵几的三室两厅',比如0X1122,内容为@'装梵几的三室两厅',同时会在栈上为myHouse分配空间,比如地址:0XAACC,内容为0X1122,因此retainCount增加1供myHouse来管理0X1122这段内存.(两套@'装梵几的三室两厅',条件好,分居了,房子一人一套,所以钥匙一人一把。)

    什么时候用assign,当然是破房子,简装的房子拉 基础类型(简单类型,原子类型):NSInteger,CGPoint,CGFloat,C数据类型(int,float,double,char等) 什么时候用copy 含有可深拷贝的mutable子类的类,如NSArrayNSSetNSDictionaryNSData的,NSCharacterSetNSIndexSetNSString (可深度拷贝的房子) 但是NSMutableArray这样的不可以,Mutable的不能用copy,不然初始化会有问题。切记 什么时候用retain 其他NSObject和其子类对象好嘛 (大多数) ARC中的strong相当于非ARC中的retain,ARC来了以后多搞一把钥匙就strong了啦。

    抄袭:http://wenku.baidu.com/view/ab6ed804bed5b9f3f90f1c7d.html

     

    有空的话翻译一下好嘛:

    http://clang.llvm.org/docs/AutomaticReferenceCounting.html

    https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html

    转自:http://my.oschina.net/openlab/blog/89354

    http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html

    先看这个 :

    http://blog.csdn.net/favormm/article/details/7023322

    http://www.crifan.com/object_c_property_setter_assign_retain_copy_weak_strong/

    http://www.crifan.com/object_c_property_setter_assign_retain_copy_weak_strong/

  • 相关阅读:
    新项目反思
    nei网访问
    react
    css沉默
    沉默
    node准备
    C++学习(八):删除文件
    利用工具格式化日期文本
    PageHelper 记录总条数不正确问题处理
    tk.mybatis 多个or条件拼接
  • 原文地址:https://www.cnblogs.com/wuxiufang/p/3709112.html
Copyright © 2011-2022 走看看