关于 copy,mutableCopy的一点总结

不管是集合类对象(NSArray,NSDictionary,NSSet...),还是非集合类对象(NSString),接收到copy或者mutableCopy消息时,都需遵循以下准则:

copy 返回的都是不可变对象
所以如果对 copy 返回值去调用可变对象的接口就会 crash。

mutableCopy 返回的都是可变对象
所以在 - (void)testCash 方法中执行到 self.copAry = arr; ARC 环境下setter 方法执行了 copy 方法,导致原本 NSMutableArray类型数组变成 NSArray 类型,在调用removeObject:方法时,自然会出现这个错误reason: '-[__NSArrayI removeObject:]: unrecognized selector sent to instance 0x6000000487c0'

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 阴差阳错,前两天和一个小伙伴在一起聊天。聊到关于copy和strong的问题。这个在ARC[Automatic R...
    tianlanse1213阅读 541评论 0 0
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    琦均煞Sylar阅读 433评论 0 0
  • 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的...
    sumrain_cloud阅读 347评论 0 1
  • 前几天面试被问到copy和mutableCopy的知识,一开始答得是对的,但是被面试官饶了几圈就有点懵了,因为对方...
    life白玉兰阅读 449评论 0 3
  • 前言 不敢说覆盖OC中所有copy的知识点,但最起码是目前最全的最新的一篇关于 copy的技术文档了。后续发现有新...
    zyydeveloper阅读 3,435评论 4 35