Copy 和 mutableCopy

2017-04-05  本文已影响0人  sll_

如何使用copy功能?

一个对象可以调用copy或mutableCopy方法来创建一个副本对象。

copy:创建的时不可变副本(如NSString、NSArray、NSDictionary)。

mutableCopy:创建的可变副本(如NSMutableString、NSMutableArray、NSMutableDictionary)。

使用copy功能的前提:

copy:

需要遵守NSCopying协议,实现copyWithZone:方法.

@protocol NSCopying

- (id)copyWithZone:(NSZone *)zone;

@end

mutableCopy:

需要遵守NSMutableCopying协议,实现mutableCopyWithZone:方法

@protocol NSMutableCopying

- (id)mutableCopyWithZone:(NSZone *)zone;

@end

深复制和浅复制的区别:

深复制(深拷贝/内容拷贝):

本质:产生了新对象。

特点:

1、源对象和副本对象是不同的两个对象;

2、源对象引用计数器不变,副本对象计数器为1(因为是新产生的)。

浅复制(浅拷贝/指针拷贝):

本质:没有产生新对象。

特点:

1、源对象和副本对象是同一对象;

2、源对象(副本对象)引用计数器+1,相当于做一次retain操作。

上一篇 下一篇

猜你喜欢

热点阅读