Atribuindo a si mesmo em Objective-C
Eu sou do mundo C ++ assim a noção de atribuiçãothis
me faz estremecer:
this = new Object; // Gah!
Mas no Objective-C existe uma palavra-chave semelhante,self
, para o qual isso é perfeitamente aceitável:
self = [super init]; // wait, what?
Um monte de código Objective-C de amostra usa a linha acima eminit
rotinas. Minhas perguntas:
1) Por que a designação paraself
faz sentido (respostas como "porque a linguagem permite" não contam)
2) O que acontece se eu não atribuirself
no meuinit
rotina? Estou colocando minha instância em algum tipo de perigo?
3) Quando os seguintesif
declaração falha, o que significa e o que devo fazer para me recuperar:
- (id) init
{
self = [super init];
if (self)
{
self.my_foo = 42;
}
return self;
}