objective-c cocoa-touch nscoder

objective c - Objetivo C-¿Cómo uso el método initWithCoder?



objective-c cocoa-touch (2)

La clase NSCoder se utiliza para archivar / desarchivar (marshal / unmarshal, serialize / deserialize) de objetos.

Este es un método para escribir objetos en secuencias (como archivos, sockets) y poder recuperarlos más tarde o en un lugar diferente.

Le sugiero que lea http://developer.apple.com/library/mac/#documentation/cocoa/conceptual/Archiving/Archiving.html

Tengo el siguiente método para mi clase que intenta cargar un archivo de nib y crear una instancia del objeto:

- (id)initWithCoder:(NSCoder*)aDecoder { if(self = [super initWithCoder:aDecoder]) { // Do something } return self; }

¿Cómo se instancia uno un objeto de esta clase? ¿Qué es este NSCoder ? ¿Cómo puedo crearlo?

MyClass *class = [[MyClass alloc] initWithCoder:aCoder];


También debe definir el siguiente método de la siguiente manera:

- (void)encodeWithCoder:(NSCoder *)enCoder { [super encodeWithCoder:enCoder]; [enCoder encodeObject:instanceVariable forKey:INSTANCEVARIABLE_KEY]; // Similarly for the other instance variables. .... }

Y en el método initWithCoder inicialice de la siguiente manera:

- (id)initWithCoder:(NSCoder *)aDecoder { if(self = [super initWithCoder:aDecoder]) { self.instanceVariable = [aDecoder decodeObjectForKey:INSTANCEVARIABLE_KEY]; // similarly for other instance variables .... } return self; }

Puede inicializar el objeto de manera estándar, es decir

CustomObject *customObject = [[CustomObject alloc] init];