Capítulo I: Objective-C. Lección 4: Categorías.

Las categorías son una característica muy util de Objective-C, muy útiles cuando quieres agregar funcionalidad a una clase, pero no quieres reescribirla o no tienes el código fuente como cuando se encuentra en una biblioteca.
Supongamos que tenemos una clase Perro con la siguiente declaración y definición:

//  Perro.h @interface Perro : NSObject { } -(void) ladra; -(void) corre; @end
//  Perro.m #import “Perro.h” @implementation Perro -(void) ladra {         //Guau guau } -(void) corre {         //trut trut turut } @end

Se puede agregar métodos a una clase existente, aún si no tuvieramos su código fuente con una categoría:

//  PerroTrucos.h @interface Perro (Trucos) { } -(void) traeLaVarita; @end
//  Perro.m #import “PerroTrucos.h” @implementation Perro (Trucos) -(void) traeLaVarita {  //va por la varita } @end
  • Para crear una categoría, se debe declarar con @interface NombreDeClaseExistente (NombreDeCategoriaNueva)
  • Una vez declarada la categoría se define con @implementation NombreDeClaseExistente (NombreDeCategoriaNueva)
  • Solo se pueden agregar Métodos, no se aceptan variables de instancia.
  • Solo puede haber una categoría con el mismo nombre, pero se pueden agregar muchas categorías a una misma clase.