在进行数组拷贝时发现个蛋疼的问题:将NSArray拷贝至NSMutableArray后 可变数组的对象再也无法进行动态处理(插入等操作),会导致crash,查资料后发现
有不同的方法来进行对象的复制。
1)浅层复制(shallow copy):不复制引用对象,新复制的对象只指向现有的引用对象。 NSArray类的copy方法是浅层复制,所以当你把以个NSArray的对象复制给一个NSMutableArray对象时,就会造成可变数组的对象不可变,即当使用插入、替换等相应的方法时均会出现调试错误。就因为你复制的对象只复制指向引用对象的指针,而不复制引用对象本身。
2)深层复制(deep copy):将复制所有的引用对象。如果NSArray的copy方法是深层复制,则在复制操作完成后,会再创建个对象来存放所复制的引用对象。
你可以根据特定类的需要,自由混搭深层复制和浅层复制你的组合对象。