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.