quarta-feira, 15 de abril de 2009

iPhone Dev 3

Para não ficar só na base do rant irracional, um pedaço de código básico em Objective C:

[window setBackgroundColor:[UIColor yellowColor]];
CGRect textFieldFrame = CGRectMake(50, 50, 150, 40);
UILabel *label = [[UILabel alloc] initWithFrame:textFieldFrame];

label.textColor = [UIColor blackColor];
label.backgroundColor = [UIColor clearColor];
label.shadowColor = [UIColor grayColor];
label.text = @"Hello World!";
[window addSubview:label];
[window makeKeyAndVisible];
[label release];

É compreensível (para quem manja de programação), mas para uma linguagem que extende o C clássico, a sintaxe é, no mínimo, extravagante. Não é à toa que a Apple usa.

Aliás, falando nos fetiches da Apple, já que depois de copiarem tudo o que podiam dos PCs, será que a Apple não podia fazer o favor de usar a tecla Home e End para ir para o final e o começo da linha?? Ah, mas não vai dar, senão daí o Mac deixa de ter razão para existir.

4 comentários:

Bruno Sanches disse...

Kra, q troco grotesco. Pq [ e ] para todo lado? E o q diabos a @ faz na string?

E eu q achava a sintaxe do ruby estranha, e o xml no meio do codigo flex esoterico.

PV disse...

Ah, o bando de [ e ]? É o jeito esotérico do Objective C passar mensagens ou acessar propriedades. Por exemplo:

[UIcolor grayColor]

Acessa o valor constante que define a cor cinza claro no objeto de cores do Cocoa.

Já [UILabel alloc] é a mensagem para pedir à classe UILabel criar um objeto novo. Depois chama o mátodo para inicializar o objeto através de uma mensagem:

[[UILabel alloc] initWithFrame:textFieldFrame]

que chama o initWithFRame e passa um parâmetro, o frame que ele quer acessar.

Finalmente, o @ na frente da string é para usar uma string estática como objeto do Objective C.

Fala sério, se eu não ganhar dinheiro com aplicações do iPhone, eu ganho dinheiro dando aula de Objective C :D˜.

Piovezan disse...

Credo.

xemptyx disse...

Esperem até ver a definição de uma classe :S

Objective C é uma cruza demoníaca do C com Smalltalk.