Ios中 copy使用的一百种情况!

    

    先说一些深拷贝和浅拷贝的概念,浅拷贝:就相当于retain,只copy了一个对象的引用,拷贝了原来对象的指针,当被拷贝的对象改变时,拷贝的对象内容也发生改变。对于深拷贝相当于从新开辟了一块内存空间,用来存放原来对象里面的东西,这个时候,copy出来的对象和原来的对象不是同一个对象,但是他们的内容一样。

 对于一般的类 copy分为:copy(不可变拷贝)和mutableCopy(可变拷贝)的四种情况如下:1.不可变copy拷贝不可变对象(浅拷贝)2.不可变copy拷贝可变对象(深拷贝)3、可变copy拷贝不可变对象(深拷贝)4、可变copy拷贝可变对象(深拷贝)

  对于自己定义的类:要实现copy必须遵守NSCopying或者NSMutableCopying协议,这里面有一个必须实现的协议copyWithZone。

 

 当作为属性的修饰词的时候:

1copy修饰不可变属性的时候,就相当于retain

2copy修饰可变属性的时候,相当于不可变copy拷贝可变对象。属于深拷贝,这个时候,属性和对属性赋值的对象的内存都需要单独管理

 3、建议对象类型都是用retain

posted @ 2015-09-22 19:02  我家门前有大海  阅读(161)  评论(0)    收藏  举报