• 叙利亚避谈战中国是否摆大巴 人员严重不整花式缺阵 2018-05-11
  • 男子嫖娼后恋上卖淫女 女子外出约会被其砍杀 2018-05-11
  • 郭家耀:料指数于23200至23800点水平徘徊 2018-05-05
  • 海外热身天津遭惨败 队长:跟高水平打才能学习 2018-05-05
  • 中国首个海外基地为何选吉布提?扼守全球最重要航道 2018-05-05
  • 张稀哲再示爱新婚妻子:遇到对的人 有你就知足 2018-05-04
  • 崔龙洙称为输球会做自我反省 解拉米为何没进首发 2018-05-04
  • 特朗普打破惯例 罕见“优待”中国记者 2018-05-04
  • 英国脱欧后都柏林能否成为欧洲新金融中心 2018-05-03
  • 英国明年3月底前将启动脱欧程序 脱欧时间表一览 2018-05-03
  • 加拿大“网红”柯基因病辞世 粉丝超70万 2018-05-03
  • BFS牛汇:菲律宾政局动荡 比索面临贬值压力 2018-05-02
  • 哈勃望远镜捕捉到垂死恒星:如蝴蝶蹁跹(图) 2018-05-02
  • 揭秘:小检察官如何替人“消灾” 买通公安法院 2018-05-02
  • 爱神罕见粗口回应外界质疑:老子一点都不在乎 2018-05-01
  • 注册 登录
    主题 : 招一个靠谱的ios这题怎么解释???
    级别: 新手上路
    UID: 540587
    精华: 0
    发帖: 2
    可可豆: 11 CB
    威望: 11 点
    在线时间: 42(时)
    注册时间: 2016-01-25
    最后登录: 2018-04-27
    0 楼:  发表于: 2018-04-18 17:13    发自: Web Page
    来源于 一般提问 分类

    围棋的玩法:招一个靠谱的ios这题怎么解释???   

    github链接在这

    定义一个以 strong 修饰的 array:
     36选7玩法 www.mnaki.com 
    
    @property (nonatomic ,readwrite, strong) NSArray *array;
    
    


    然后进行下面的操作:
    
    ?? NSArray *array = @[ @1, @2, @3, @4 ];
    ?? NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
    ?? 
    ?? self.array = mutableArray;
    ?? [mutableArray removeAllObjects];;
    ?? NSLog(@"%@",self.array);
    ?? 
    ?? [mutableArray addObjectsFromArray:array];
    ?? self.array = [mutableArray copy];
    ?? [mutableArray removeAllObjects];;
    ?? NSLog(@"%@",self.array);
    
    


    打印结果如下所示:



    
    2015-09-27 19:10:32.523 CYLArrayCopyDmo[10681:713670] (
    )
    2015-09-27 19:10:32.524 CYLArrayCopyDmo[10681:713670] (
    ?? 1,
    ?? 2,
    ?? 3,
    ?? 4
    )
    
    


    我测试了一下的确是这样,但是下文又说对集合类型比如NSArray 类型进行copy操作是指针复制,那不就是等同于strong,引用计数+1嘛?哪来的复制一颗不可变副本的说法?
    关键词: ios
    级别: 新手上路
    UID: 572727
    精华: 0
    发帖: 11
    可可豆: 11 CB
    威望: 11 点
    在线时间: 34(时)
    注册时间: 2016-07-11
    最后登录: 2018-04-27
    1 楼:  发表于: 2018-04-18 17:45    发自: Web Page
        array             -- copy -->    copyArray
          |                                             |
          |                                             |  
        空间A                                    空间B
                             ||
                             ||
                         object

    我是这样理解的  
    级别: 新手上路
    状态: 连续签到 - [2天]
    UID: 510054
    精华: 0
    发帖: 27
    可可豆: 63 CB
    威望: 61 点
    在线时间: 343(时)
    注册时间: 2015-09-29
    最后登录: 2018-04-27
    2 楼:  发表于: 2018-04-18 18:02    发自: Web Page
    是的,对不可变对象的copy操作都是指针复制
    你现在可能是认为自己声明的属性是NSArray(不可变类型)的,所以即便copy修饰的也都是指针复制跟strong修饰没差别,但其实这个跟指针类型没有关系,跟你要引用(copy)的对象类型有关系,
    ...也可能我曲解了你的意思,但总的来说就是这样
    级别: 骑士
    状态: 连续签到 - [15天]
    UID: 526021
    精华: 0
    发帖: 435
    可可豆: 796 CB
    威望: 779 点
    在线时间: 455(时)
    注册时间: 2015-11-24
    最后登录: 2018-04-27
    3 楼:  发表于: 2018-04-19 09:33    发自: Web Page
    NSLog(@"%p,%p",self.arrray,mutableArray);
    级别: 骑士

    状态: 连续签到 - [54天]
    UID: 471816
    精华: 0
    发帖: 326
    可可豆: 698 CB
    威望: 564 点
    在线时间: 634(时)
    注册时间: 2015-05-11
    最后登录: 2018-04-28
    4 楼:  发表于: 2018-04-19 09:46    发自: Web Page
    又要我拿出这张图了吗?
    图片:修饰符.png
    It's time to turn.
    级别: 侠客

    状态: 连续签到 - [29天]
    UID: 331913
    精华: 0
    发帖: 179
    可可豆: 431 CB
    威望: 370 点
    在线时间: 536(时)
    注册时间: 2014-06-24
    最后登录: 2018-04-24
    5 楼:  发表于: 2018-04-19 14:48    发自: Web Page
    你可能没仔细看,文中有这么一段话

    在集合类对象中,对 immutable 对象进行 copy,是指针复制, mutableCopy 是内容复制;对 mutable 对象进行 copy 和 mutableCopy 都是内容复制。但是:集合对象的内容复制仅限于对象本身,对象元素仍然是指针复制。用代码简单表示如下:

    [immutableObject copy] // 浅复制
    [immutableObject mutableCopy] //单层深复制
    [mutableObject copy] //单层深复制
    [mutableObject mutableCopy] //单层深复制

    就是说,对可变类型来说,无论copy还是mutableCopy,都是进行深复制也就是内容复制,那么例子里面
    self.array = [mutableArray copy];  是深复制,复制了内容,开辟新内存
    self.array = mutableArray;             是浅复制,只复制指针,不占用新内存

    而你所说的“对集合类型比如NSArray 类型进行copy操作是指针复制,那不就是等同于strong,引用计数+1嘛?哪来的复制一颗不可变副本的说法?”是针对不可变类型,搞清NSArray和NSMutableArray的区别,两者是不同的。
    级别: 光明使者

    状态: 连续签到 - [52天]
    UID: 96533
    精华: 0
    发帖: 8046
    可可豆: 8478 CB
    威望: 8263 点
    在线时间: 310(时)
    注册时间: 2011-10-08
    最后登录: 2018-04-27
    6 楼:  发表于: 2018-04-23 18:20    发自: Web Page
    我这转swift的看着array和self.array难受死了。。。
          
    爱好+坚持
    级别: 新手上路
    UID: 622309
    精华: 0
    发帖: 6
    可可豆: 6 CB
    威望: 6 点
    在线时间: 32(时)
    注册时间: 2017-08-29
    最后登录: 2018-04-24
    7 楼:  发表于: 2018-04-24 09:58    发自: Web Page
    你怕是真的新手上路  strong和copy都搞不懂
    级别: 新手上路
    状态: 连续签到 - [1天]
    UID: 421252
    精华: 0
    发帖: 15
    可可豆: 19 CB
    威望: 17 点
    在线时间: 53(时)
    注册时间: 2014-12-24
    最后登录: 2018-04-26
    8 楼:  发表于: 2018-04-24 11:44    发自: Web Page
    第一个打印是多态的表现。
    第二个就是copy的表现。
    级别: 侠客
    UID: 494680
    精华: 0
    发帖: 96
    可可豆: 123 CB
    威望: 123 点
    在线时间: 427(时)
    注册时间: 2015-08-04
    最后登录: 2018-04-25
    9 楼:  发表于: 2018-04-24 13:34    发自: Web Page
    5楼正解   有些大神怕是连题目都没看懂
    描述
    快速回复

    关注本帖(如果有新回复会站内信通知您)

    发帖、回帖都会得到可观的积分奖励。查看论坛积分规则

    按"Ctrl+Enter"直接提交
      顶部