“Adicionando” m√©todos em Classes Nativas (Objective C)

Essa eu aprendi com um cara aqui da empresa. ūüôā

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!

Programa√ß√£o Java √© aqui. Acesse as o blog para ficar atualizado sobre o mundo da **Linguagem Java. Dicas, informa√ß√Ķes e muitos truques para se usar no dia-a-da do **programador java.