前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS NSMutableArray和NSArray实例执行mutableCopy和copy方法的区别?

iOS NSMutableArray和NSArray实例执行mutableCopy和copy方法的区别?

作者头像
赵哥窟
发布2020-06-23 10:39:00
7910
发布2020-06-23 10:39:00
举报
文章被收录于专栏:日常技术分享日常技术分享
代码语言:javascript
复制
    NSMutableArray *arrM = [NSMutableArray arrayWithArray:@[@1,@2]];

    id cp1 = [arrM mutableCopy];
    id cp2 = [arrM copy];

    NSLog(@"arrM %p, class %@", arrM, NSStringFromClass([arrM class]));
    NSLog(@"cp1  %p, class %@", cp1, NSStringFromClass([cp1 class]));
    NSLog(@"cp2  %p, class %@", cp2, NSStringFromClass([cp2 class]));
    
    NSArray *arrI = @[@1,@2];

    id cp3 = [arrI mutableCopy];
    id cp4 = [arrI copy];

    NSLog(@"arrI %p, class %@", arrI, NSStringFromClass([arrI class]));
    NSLog(@"cp3  %p, class %@", cp3, NSStringFromClass([cp3 class]));
    NSLog(@"cp4  %p, class %@", cp4, NSStringFromClass([cp4 class]));
代码语言:javascript
复制
2020-06-19 15:59:06.153599+0800 Test[81342:2338254] arrM 0x600000c73090, class __NSArrayM
2020-06-19 15:59:06.153669+0800 Test[81342:2338254] cp1  0x600000c73030, class __NSArrayM
2020-06-19 15:59:06.153701+0800 Test[81342:2338254] cp2  0x600000245660, class __NSArrayI
2020-06-19 15:59:06.153739+0800 Test[81342:2338254] arrI 0x600000245680, class __NSArrayI
2020-06-19 15:59:06.153773+0800 Test[81342:2338254] cp3  0x600000c72fd0, class __NSArrayM
2020-06-19 15:59:06.153809+0800 Test[81342:2338254] cp4  0x600000245680, class __NSArrayI

上面的问题分两种情况:

  • 当可变对象mutablecopy和copy之后,都会生成新的对象,只是新的对象的类型一个是可变的一个是不可变的。
  • 当不可变对象mutablecopy和copy之后,只有mutablecopy会生成新的对象,copy则会只复制指针。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档