Przypisywanie sobie w Objective-C
Jestem ze świata C ++, więc pojęcie przypisaniathis
sprawia, że drżę:
this = new Object; // Gah!
Ale w Objective-C istnieje podobne słowo kluczoweself
, dla których jest to całkowicie dopuszczalne:
self = [super init]; // wait, what?
Wiele przykładowego kodu Objective-C używa powyższej linii winit
procedury. Moje pytania:
1) Dlaczego przypisanie doself
ma sens (odpowiedzi takie jak „ponieważ język na to pozwala” nie licz)
2) Co się stanie, jeśli nie przypiszęself
w moiminit
rutyna? Czy kładę mój przypadek w jakimś niebezpieczeństwie?
3) W następujących przypadkachif
oświadczenie nie powiedzie się, co to znaczy i co mam zrobić, aby odzyskać z niego:
- (id) init
{
self = [super init];
if (self)
{
self.my_foo = 42;
}
return self;
}