Come usare le Category, cosa sono e a cosa servono in Objective-C

In poche parole, le Category sono delle estensioni di Classi già esistenti.

A differenze di una sottoclasse, una category applica il suo comportamento a tutte le classi. Quindi è molto potente e pure molto pericoloso.

Però se ben sfruttate ci possono aiutare a velocizzare il lavoro e migliorare il nostro progetto.

Notate bene che, a differenza di una sottoclasse, con le category non si possono scrivere dati dentro gli oggetti, quindi si può manipolare solo i dati conosciuti. Ad esempio non possiamo aggiungere delle ivar o delle variabili, ma possiamo calcolare o modificare i loro valori dove possibile.

Proviamo con qualcosa di semplice, il limite sta nella vostra fantasia.. e nelle vostre esigenze.

Mettiamo che abbiamo bisogno di sapere in modo più pratico la posizione o la dimensione di una View.
Possiamo ovviamente avere questi dati in questo modo:

CGSize size = view.frame.size;
CGPoint origin = view.frame.origin;

Ma sarebbe ancora più comodo se potessimo fare:

CGSize size = view.size;
CGPoint origin = view.origin;

Ecco che vengono in aiuto le Category.

Creiamo una classe di tipo Category tramite XCode.
Come nome mettiamo “Sizes” e come Classe di appartenenza mettiamo “UIView”. Avremo quindi “UIView+Sizes.h” e “UIView+Sizes+m”.

Nell’header inseriamo due metodi:

@interface UIView (Sizes)

- (CGSize)size;
- (CGPoint)origin;

@end

Nel file di implementazione invece inseriamo:

@implementation UIView (Sizes)

- (CGSize)size {
return self.frame.size;
}

- (CGPoint)origin {
return self.frame.origin;
}

@end

Pronti. Adesso possiamo importare questa category e tutti i nostri oggetti UIView potranno usufruire di questi due nuovi metodi.

Ovviamente questo è un esempio semplicistico, ma pensate alle sue potenzialità!

Curiosità

Esistono in realtà dei metodi per scrivere all’interno degli oggetti tramite le Category, ma ne parleremo più avanti.

Next ArticleCome disegnare una linea con CoreGraphics