Agora que começo a ter mais tempo, voltei a pegar no Objective – C, mas desde o zero, zerinho – já não me lembrava de muita coisa básica – volto a dizer que é uma linguagem esquisita. Pegaram no C e tornaram-no assim uma coisa diferente, mas não para melhor. Ao mesmo tempo que fui aprendendo Objective – C comparei-o com o VB.net, linguagem com que tenho trabalhado ultimamente.
Vou partir do principio que quem lê isto sabe um pouco de C e de VB.net, uma vez que certas coisas do VB.net vão estar resumidas só para se perceber a ideia. A linguagem utilizada não vai ser a mais apropriada.
Instanciar uma Classe
VB
novo_carro = new Carro()
OBJ-C
Carro *carro_do_marco = [[Carro alloc] init]
Declaração de métodos
VB
sub abrevidros(arg1 as string, arg2 as string)
OBJ-C
no nome_da_classe.h (ficheiro onde declaramos as variáveis, os métodos, as propriedades)
-(void) abre_vidros: (int) arg1 over: (int) arg2;
no nome_da_classe.m (ficheiro onde se programam os métodos, é onde acontece a acção)
Chamar os métodos (eu avisei da linguagem)
VB
carro_do_marco.andar()
carro_do_marco.acelerar(5) ou = 5 no caso dos set e get
carro_do_marco.abre_vidro(1, 2)
OBJC-C
[carro_do_marco andar]
[carro_do_marco acelerar: 5]
carro_do_marco.acelerar=5 (convenção apenas para get e set)
[carro_do_marco abre_vidros: 1 over: 2]
VB
this.um_qualquer_metodo_do_objecto()
objc
[self um_qualquer_metodo_do_objecto]
Viva Marco.
Boa exploração do objective-c, que é ao fim do dia a mesma xaropada que todas as outras linguagens (baseadas de forma mais ou menos distante na syntax e lógica do c).
No primeiro exemplo podes usar também:
Carro *carro_do_marco = [Carro new]
… se quiseres tornar mais parecido o paralelo com o VB (o metodo “new” chama o “alloc” e o “init” em sequência) e está presente (herdado de) em todas as classes baseadas no NSObject.
Mais importante que dominar a syntax é perceberes o que está “por trás” dela… voltando ao exemplo de instanciar uma classe, no VB o compilador tem de determinar que “novo_carro” é uma variável de tipo “carro”, no objective-c ela tem que ser explicitamente declarada, e estás na tua linha a juntar os dois passos:
Carro *carro_do_marco;
carro_do_marco= [Carro new]
A segunda linha já fica bem mais parecida com o
novo_carro = new Carro()
Diverte-te com o objective-c, que depois de “assimilado” é só um meio de comunicares com o hardware, como qualquer outra linguagem.
PLS
Obrigado Paulo Laureano.