我知道副本会创建一个对象的不可变副本,但我只是想知道copywithzone是如何工作的以及copy和copywithzone之间的基本区别
答案 0 :(得分:11)
copy
只是copyWithZone:
的缩写。
您很少直接致电copyWithZone:
,但为了采用@protocol NSCopying
,需要定义/实施它。因此,您通常只会在copyWithZone:
的实施中看到copyWithZone:
。同样,您通常会避免实施copy
,只需让copy
的默认实现通过copyWithZone:
进行调用。
答案 1 :(得分:5)
NSZone
是一个与iOS无关的传统概念。默认情况下,-copy
上的NSObject
会使用默认区域调用-copyWithZone:
。