copy、mutableCopy详解.docVIP

  • 3
  • 0
  • 约小于1千字
  • 约 3页
  • 2017-06-08 发布于河南
  • 举报
copy、mutableCopy详解

copy、mutableCopy详解 首先呢,copy后得到的对象都是不可变的,mutableCopy后得到的对象都是可变的。 1、非容器对象(NSString) 11 如果源对象是不可变的: 111. 那么copy后的对象 返回对象是不可变的 、源对象 都是同一个对象,对象的地址是一样的。既然指针地址都一样,那么指向的内容肯定也是一样的。俗称“浅拷贝”。Foundation框架中支持复制的类,默认是浅拷贝。 112. mutableCopy俗称“深拷贝”,会拷贝对象的地址以及内容,指针的地址(栈地址),指针指向的内容地址(堆地址)都会变。返回一个可变的对象。 12 如果源对象是可变的(NSMutableString): 121.这时候copy和mutableCopy都是深拷贝,会拷贝整个对象,对象的地址和内容都会拷贝。但是copy返回的对象是不可变的,文章开头已说明。 2、容器对象(NSArray、NSDictionary、NSSet等) 21 如果源对象是不可变的: 211. copy后,这一点和上面的111是一模一样的。 212. mutableCopy只拷贝对象的地址,但是容器的内容 即容器内的对象 并没有拷贝,指针指向的内容地址(堆地址)没有变,也就是说两个指针同时指向一块内存区域。返回一个可变的对象。那么我们要做到真正意义上的深拷贝 拷贝容器以及容器的内容 ,那么

文档评论(0)

1亿VIP精品文档

相关文档