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

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.

Scritto il