Zauważyłem, że większość programów kodujących Objective-C nigdy nie używa składni self->ivar
przy bezpośrednim dostępie do zmiennych instancji. Większość przykładowego kodu, który widzę, po prostu odwołuje się do zmiennej instancji bez self->
. Sądzę, że pomylenie zmiennej instancji jest dość mylące, nie wyjaśniając, że jest to zmienna instancji, a nie tylko zmienna bieżącego zakresu.Używanie self-> ivar do bezpośredniego dostępu do zmiennych instancji
czuję, że chcę pisać rzeczy jak:
- (void)dealloc {
[self->someVar release];
[self->anotherVar release];
[super dealloc];
}
lub
- (void)setVar:(Foo *)newVar {
[self->var autorelease];
self->var = [newVar retain];
}
Nie ma dużo okazjach, kiedy nigdy nawet powinny uzyskać dostęp do naszych zmiennych instancji bez użycia accessor do enkapsulacji, ale czasami potrzebujemy takich jak dealloc, lub w niestandardowych programach pobierających i ustawiających.
Czy jestem złą osobą/programistą do robienia tego? Czy istnieje jakiś naprawdę dobry powód, by nie pisać takiego kodu? Ponieważ naprawdę dobrze jest robić to w ten sposób.
Tak jak powiedziałem, jest krótszy. Wolę to, ale nie mogłem argumentować, że krótsze identyfikatory są zawsze lepsze - nie chciałbym utrzymywać kodu, który jest wszystkim X, Y i Z. Więc to w zasadzie kwestia, gdzie znajdujesz swoje szczęśliwe medium. Podejrzewam, że Pythoniści prawdopodobnie woleliby formę 'self->'. Oczywiście, nie powinieneś często wykonywać bezpośredniego dostępu do ivar w Objective-C. Być może bycie nieatrakcyjnym to kolejna zaleta składni "self->". – Chuck
Lol. "pomyśl o skórze". Czy ta skóra jest cienka i trochę gruba? – Rob