“-copy”和“-copyWithZone:”有什么区别?

时间:2012-08-21 05:31:57

标签: objective-c ios cocoa foundation nscopying

我知道副本会创建一个对象的不可变副本,但我只是想知道copywithzone是如何工作的以及copy和copywithzone之间的基本区别

2 个答案:

答案 0 :(得分:11)

使用默认区域

copy只是copyWithZone:的缩写。

您很少直接致电copyWithZone:,但为了采用@protocol NSCopying,需要定义/实施它。因此,您通常只会在copyWithZone:的实施中看到copyWithZone:。同样,您通常会避免实施copy,只需让copy的默认实现通过copyWithZone:进行调用。

答案 1 :(得分:5)

NSZone是一个与iOS无关的传统概念。默认情况下,-copy上的NSObject会使用默认区域调用-copyWithZone: