^^^ Lo que dijeron ^^^
Y también, si desea serializar toda la matriz, NSKeyedArchiver / Unarchiver espera que sus objetos se ajusten a NSCopying. Creo que esto se debe a que serializa (una copia de) cada objeto individual en lugar de la “matriz de objetos”. Supongo que no es necesario serializar la estructura de datos de la matriz en sí, ya que NSKeyedUnarchiver podría crear una nueva matriz en el otro extremo.
Un caso en el que esto es muy útil es guardar un NSArray / NSMutableArray en CoreData, que no tiene una forma inmediata de hacerlo. Otro lugar que resulta útil es convertir una matriz a plist, nuevamente a través de NSKeyedArchive / Unarchive.
- ¿Cuáles son las ventajas de seguridad de Apple iOS sobre Android o viceversa?
- ¿Cómo se compara Windows Phone con Android e iOS?
- ¿Cuáles son algunos de los mejores juegos para iOS y Android?
- ¿Es posible instalar Cydia en un iPhone? ¿Puedo encontrar algunas alternativas para un iOS 9?
- ¿Cuál es la mejor fuente para aprender Sketch 3 en el contexto del desarrollo de iOS?
En cuanto a NSValue que no implementa copyWithZone , consulte los documentos:
“La clase abstracta NSValue es la interfaz pública de un grupo de clases que consiste principalmente en clases privadas y concretas que crean y devuelven un objeto de valor apropiado para una situación dada. Es posible subclasificar NSValue, pero hacerlo requiere proporcionar facilidades de almacenamiento para el valor (que no es heredado por las subclases) e implementar dos métodos primitivos “.
Me arriesgaría a adivinar que las “clases privadas y concretas” que componen NSValue implementan copyWithZone , y que afortunadamente se abstrae de usted.
Si observa las notas de subclasificación para NSValue, obtendrá una pista de cómo sucede esto: Referencia de clase de NSValue