copy 和 mutableCopy
2016-05-11 15:20
92 查看
OC中,复制有两种: copy 和 mutableCopy。顾名思义,是生成不可变或可变的对象。关于复制出来的到底是新对象还是原来对象,请参考一下代码:
s1 addr = 0x10a2e6030
s2 addr = 0x10a2e6030
s3 addr = 0x7fd0b940c6e0
s4 addr = 0x6168616845
由此可见,对不可变对象进行copy操作,不会产生新的对象,而是指向原来对象。其他的都是会生成一个新的复制品
#import <Foundation/Foundation.h> int main(int argc, char *argv[]) { @autoreleasepool { NSString *s1 = @"haha"; NSString *s2 = [s1 copy]; NSMutableString *s3 = [s1 mutableCopy]; NSString *s4 = [s3 copy]; NSLog(@"s1 addr = %p", s1); NSLog(@"s2 addr = %p", s2); NSLog(@"s3 addr = %p", s3); NSLog(@"s4 addr = %p", s4); } }输出的结果为:
s1 addr = 0x10a2e6030
s2 addr = 0x10a2e6030
s3 addr = 0x7fd0b940c6e0
s4 addr = 0x6168616845
由此可见,对不可变对象进行copy操作,不会产生新的对象,而是指向原来对象。其他的都是会生成一个新的复制品
copy | mutableCopy | |
可变对象 | 新对象 | 新对象 |
不可变对象 | 原来对象 | 新对象 |
相关文章推荐
- 批处理中Copy与Xcopy命令的区别小结
- dos 文件复制 copy命令
- 谈谈xcopy中的排除copy
- php使用COPY函数更新配置文件的方法
- copy 将一个或多个文件从一个位置复制到其他位置
- cmd copy命令 文件复制
- 深入解析C++中的mutable关键字
- 浅析iOS中的浅拷贝和深拷贝(copy和mutableCopy)
- 浅谈Python中copy()方法的使用
- Python中使用copy模块实现列表(list)拷贝
- 简单的copy程序
- 从源文件中读出最后10KB内容到目的文件中
- 负载均衡及会话保存(Ofbiz框架)
- JAVA Zero Copy的相关知识
- cp命令
- (转)讲一下retain/copy/assign的含义
- 检查内存技巧
- Linux系统Qmail邮件服务器安装过程解析
- ios数据存储4种
- copy与retain nonatomic和atomic