copy 和 mutableCopy

来源:互联网 发布:asp连接sql数据库代码 编辑:程序博客网 时间:2024/04/28 00:00

对于可变的对象(NSMutableString)  

使用copy 和 mutableCopy 会产生新的指针和新的对象(新的指针指向新的对象)  而且 改变原件 不会改变副本  改变副本 不会改变原件(说明原来的一个指针和新生成的两个指针 指向不同的内存地址 会产生新的对象);


对于不可变的对象(NSString)  

使用 mutableCopy 会产生新的指针和新的对象(新的指针指向新的对象)  而且 改变原件 不会改变副本  改变副本 不会改变原件(说明新生成的一个和原来的一个指针 指向不同的内存地址 会产生新的对象);
但是当使用copy 时 对于不可变的对象 返回的就是当前对象(不会产生新的对象) 就是生成的指针指向原来的对象地址


以上的例子: 产生新对象的就是深拷贝(可变对象的copy 和 mutableCopy 和不可变对象的 mutableCopy) 没有产生新对象的就是浅拷贝(不可变对象的 copy);


0 0