【发布时间】:2012-08-16 10:45:56
【问题描述】:
我知道 copy 创建一个对象的不可变副本,但我只想知道 copywithzone 的工作原理以及 copy 和 copywithzone 之间的基本区别是什么
【问题讨论】:
标签: objective-c ios cocoa foundation nscopying
我知道 copy 创建一个对象的不可变副本,但我只想知道 copywithzone 的工作原理以及 copy 和 copywithzone 之间的基本区别是什么
【问题讨论】:
标签: objective-c ios cocoa foundation nscopying
NSZone 是一个与 iOS 无关的遗留概念。默认情况下,NSObject 上的 -copy 将使用默认区域调用 -copyWithZone:。
【讨论】:
copy 是copyWithZone: 的缩写,使用默认区域。
您很少会直接调用copyWithZone:,尽管需要定义/实现它才能采用@protocol NSCopying。所以你通常只会在copyWithZone: 的实现中看到copyWithZone:。同样,您通常会避免实现copy,而只是让copy 的默认实现通过copyWithZone: 调用。
【讨论】: