"-copy"和"-copyWithZone:"有什么区别?

pra*_*har 7 cocoa objective-c foundation nscopying ios

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

jus*_*tin 12

copy只是copyWithZone:使用默认区域的缩写.

你很难copyWithZone:直接打电话,虽然为了采用它需要定义/实施它@protocol NSCopying.所以你通常copyWithZone:只会在实现中看到copyWithZone:.同样,你通常会避免实现copy,只是让copy调用的默认实现copyWithZone:.


Jos*_*erg 5

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