@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.