关于 copy,mutableCopy的一点总结

2020-01-22  本文已影响0人  hui8685291

不管是集合类对象(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'

上一篇下一篇

猜你喜欢

热点阅读