Curso básico de Objective C: Categorías

Una de las cosas más interesantes de Javascript es la posibilidad de ir agregando propiedades y funcionalidades a las clases ya existentes. En Objective C se puede realizar algo similar utilizando las Categorías. Esto nos da la posibilidad de realizar la implementación de una clase mediante varias personas a la vez. Cada uno sería responsable de un fichero y se podría realizar una gestión de versiones muy sencilla.

Creación de una Categoría

Para crear la categoría en un proyecto abierto es necesario crear un nuevo fichero mediante el uso del menú File->New->File o pulsando Comando + N. Aparecerá el Asistente de creación de nuevo fichero:
Seleccionamos Objective-C category y pulsamos en Next. Aparecerá la pantalla de nombres:
Aquí es donde debemos escribir el nombre de la categoría y el nombre de la clase de la cual queremos ampliar funcionalidades en el campo Category on. Cuando terminemos pulsamos en Next. Y nos saldrá la pantalla de guardado:
Dejaremos que lo guarde en la misma carpeta del proyecto. Recordad dejar seleccionado en Targets el nombre del proyecto. Pulsamos en Create. Ahora nos debería aparecer el fichero de implementación de la nueva categoría, con un contenido similar a este:
#import “NSString+DVString.h”
@implementation NSString (DVString)
@end
Por otra parte deberíamos tener el fichero de cabecera .h:
#import <Foundation/Foundation.h>
@interface NSString (DVString)
@end
Como podemos ver el nombre de los ficheros debería ser primero el nombre de la clase que queremos ampliar un + y luego el nombre que le hemos dado a nosotros ala categoría. Por otra parte tanto en el fichero de cabecera como en el de implementación, se parecen mucho a los de una clase normal con sus @implementation y @end en el fichero de implementación. Y en el de cabecera con el @interface y @end .
En ambos casos después del primer @ se coloca el nombre de la clase que queremos ampliar funcionalidad y entre () el nombre de la categoría que estamos escribiendo.
Obviamente en el fichero de cabecera importamos las clases fundacionales y en el de implementación el fichero de cabecera de la categoría.

Incluyendo métodos y propiedades

La inclusión de métodos y propiedades sería de una manera similar a como se realiza en una clase normal. Tal como indicamos en el tema sobre Clases y Objetos.
Por ejemplo vamos a incluir un método que permita imprimir la cadena de caracteres por consola, el fichero de cabecera quedaría así:
#import <Foundation/Foundation.h>
@interface NSString (DVString)
– (void) imprime;
@end
y el fichero de implementación sería este:
#import “NSString+DVString.h”
@implementation NSString (DVString)
– (void) imprime{
    NSLog(@”%@”,self);
}
@end
Com puede verse hemos declarado e implementado un método llamado imprime que permite sacar por consola el valor de la cadena almacenada en el objeto.

Utilizando un Objeto de la categoría

Para ello en el fichero main.m deberemos importar el fichero de cabecera de la categoría:

#import “NSString+DVString.h”

    

La declaración del Objeto sería como se hace normalmente con un objeto NSString:
NSString *cadena=@”valor”;
Después sólo restaría utilizar el método declarado en la categoría:
[cadena imprime];

Comments

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies