首先你得知道OC中copy语法的用途:对copy出来的副本的操作不影响原来的对象。然后再知道copy方法copy出来的对象是不可变的,mutableCopy方法copy出来的对象是可变的。好了,一个不可变对象使用copy,也就是说不可变的对象,复制出一个不可变的对象,因为不可变的对象本身是不可变的,如果从新开辟空间弄一个副本出来 ,是不是太浪费空间了,而且复制对象内容也耗费点性能,所以不可变使用copy方法的时候索性不生成副本,直接把原对象的指针赋给copy出来的对象,这就是指针拷贝。其他情况都是内容拷贝,你想啊,可变的对象使用copy复制出来的是不可变的对象,这种情况 原对象是可变的,副本对象要求是不可变的。如果指针拷贝的话,原对象因为可变,如果变了就会让copy出来的不可变对象也改变了,所以肯定要内容拷贝了,其他情况 你慢慢思考下 |