@interface Matrix : NSObject <NSCoding> ... @endEn este código se muestra la definición del protocolo en la línea donde se define el nombre de la clase y la super clase.
Cuando se integra el protocolo a una clase, también se deben implantar los métodos encodeWithCoder e initWithCoder para codificar y decodificar un objeto. En estos métodos se describen los elementos de la instancia que serán codificados y decodificados. Por ejemplo veamos el caso de la implantación del protocolo NSCoding en la clase Matrix. En esta clase se codifican el número de renglones, columnas, y el identificador al elemento base o inicial. El identificador al elemento actual no se almacena ya que su valor puede inicializarse siempre con la referencia de la base.
- (void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeValuesOfObjCTypes:"ii@", &nRows, &nColumns, &base];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
[aDecoder decodeValuesOfObjCTypes:"ii@", &nRows, &nColumns, &base];
current = base;
return self;
}
En este ejemplo se observa que los métodos encodeWithCoder y
initWithCoder, tienen un objeto NSCoder como argumento de
entrada, este objeto lo envían automáticamente las clase
NSArchiver y NSUnarchiver cuando se le mandan los mensajes
archiveRootObject (para almacenar un objeto), y
unarchiveObjectWithFile, respectivamente.
Las clases que tienen implantado este protocolo son las que tienen relación con la clase PNMatrix (excepto la clase PNView). Estas clases son: PNMatrix, Matrix, Element, Figure, Place, Transition y Connection.