iPhone:(id) copyWithZone:(NSZone*) zona: ¿para qué sirve “zona”?
nscopying (2)
Al implementar este método de NSCopying en una clase para habilitar la copia, ¿para qué sirve la zona param? Si configuro un nuevo objeto, no necesito asignarlo con allocWithZone, ya que una asignación es suficiente ... Estoy confundido ...
Eche un vistazo a la referencia del protocolo NSCopying , específicamente copyWithZone:
Es una reliquia de los viejos tiempos, donde teníamos múltiples "zonas" para asignar. En estos días, todas las aplicaciones solo tienen una única zona donde se hacen todas las asignaciones, pero la clase NSZone
todavía existe y se escribe demasiado código para depender en +allocWithZone:
siendo el método de asignación fundamental para realizar el cambio.
En resumen, puede ignorar la estructura NSZone
en su totalidad, y la única razón para preocuparse por +allocWithZone:
es si necesita +allocWithZone:
. De manera similar, con -copyWithZone:
puedes ignorar la zona. Si lo deseas, puedes llamar a +allocWithZone:
pasar en la misma zona, pero no hará ninguna diferencia.