Sempre que precisava de um método novo em uma classe que já existia em Java, eu tinha que criar uma nova classe que herdava desta e criar o método:
public class MyArrayList extends ArrayList {
public void sort() {
...
}
}
Para usar, tinha que substituir a instância para esta classe:
//De: ArrayList a = new ArrayList();
//Para:
MyArrayList a = new MyArrayList();
a.sort();
Mas em Objective C existe uma coisa interessante, se eu quiser criar um método em uma classe já existente, basta colocar uma "categoria" para ela. Por exemplo: quero criar um método chamado parseJSON na classe NSString (que já existe na API da Apple):
/*
* NSString+JSON.h
*/
@interface NSString (NSString_JSON)
- (NSDictionary*) parseJSON;
@end
/*
* NSString+JSON.m
*/
@implementation NSString (NSString_JSON)
- (NSDictionary*) parseJSON
{
...
}
@end
Agora, qualquer objeto do NSString possue este método (sem eu precisar mudar a classe da variável!):
NSString* str = @"{a:1, b:2}";
NSDictionary* dict = [str parseJSON];
Muito interessante... :)
Valeu, Koga, pela dica!
Até mais!
Nenhum comentário:
Postar um comentário