Estoy confundido mirando la documentación de Apple y leyendo los patrones de diseño de Cocoa. En la documentación de Apple para copyWithZone:
, se lee: existeAnular copiar o copiarWithZone: ¿o ambos?
Este método por lo que los objetos de clase se pueden utilizar en situaciones en las que necesita un objeto que cumpla con el protocolo NSCopying. Para el ejemplo , este método le permite usar un objeto de clase como clave para un objeto NSDictionary . No debes anular este método.
Para copy
se lee:
Este es un método de conveniencia para las clases que adoptan el protocolo NSCopying . Se genera una excepción si no hay implementación para copyWithZone :.
NSObject no es compatible con el protocolo NSCopying. Las subclases deben admitir el protocolo e implementar el método copyWithZone :. Una versión de subclase del método copyWithZone: debe enviar el mensaje al súper primero, para incorporar su implementación, a menos que la subclase desciende directamente de NSObject.
En los ejemplos en los Patrones de Diseño de cacao, anulan copyWithZone:
y mutableCopyWithZone:
pero no anulan copy
cuando se cumpla con el protocolo NSCopying
. ¿Es eso lo que debería hacer si quiero usar mi subclase personalizada en un NSDictionary
como clave?
¿O bien anulo copy
?
Del mismo modo, si hago [myClass copy]
, ¿eso llama a copyWithZone:
o copy
para que mi subclase personalizada? Gracias.