当在类中实现 NSCopying 方法以启用拷贝时,参数 zone 有什么作用?
如果我设置一个新对象,我不需要使用 allocWithZone 进行分配,只需要使用 alloc 就足够了... 我感到困惑...
这是一个遗留下来的东西,早期我们有多个“区域”可供分配。如今,所有应用都只有一个区域来进行分配,但是NSZone
类仍然存在,许多代码都依赖于+allocWithZone:
作为基本分配方法进行编写,因此无法更改。
简而言之,您可以完全忽略NSZone
结构体,唯一需要关注+allocWithZone:
的原因是如果您需要覆盖它。同样,对于-copyWithZone:
,您可以忽略区域。如果您愿意,可以调用+allocWithZone:
并传入相同的区域,但不会有任何区别。
请查看NSCopying协议参考, 特别是copyWithZone: