Ich habe festgestellt, dass die meisten Objective-C-Codierer die Syntax self->ivar
niemals verwenden, wenn sie direkt auf Instanzvariablen zugreifen. Der meiste Beispielcode, den ich sehe, verweist einfach auf die Instanzvariable ohne self->
. Ich denke, dass es ziemlich verwirrend ist, eine Instanzvariable zu referenzieren, ohne klar zu machen, dass es sich um eine Instanzvariable und nicht einfach um eine Variable des aktuellen Bereichs handelt.Verwendung von self> ivar beim direkten Zugriff auf Instanzvariablen
Ich fühle mich wie ich Sachen schreiben wollen wie:
- (void)dealloc {
[self->someVar release];
[self->anotherVar release];
[super dealloc];
}
oder
- (void)setVar:(Foo *)newVar {
[self->var autorelease];
self->var = [newVar retain];
}
Es gibt nicht eine ganze Menge Gelegenheiten, bei denen wir immer noch unsere Instanzvariablen zugreifen sollte ein ohne Verwendung von Accessor für die Kapselung, aber manchmal müssen wir wie in Dealloc oder in benutzerdefinierten Getters und Setter.
Bin ich ein schlechter Mensch/Programmierer dafür? Gibt es wirklich gute Gründe dafür, keinen solchen Code zu schreiben? Weil es sich so gut anfühlt.
Wie ich schon sagte, es ist kürzer. Ich bevorzuge es, aber ich kann nicht argumentieren, dass kürzere Bezeichner immer besser sind - ich würde es hassen, Code zu pflegen, der alles x, y und z ist. Es geht also im Wesentlichen darum, wo du dein glückliches Medium findest. Ich vermute, dass Pythonisten wahrscheinlich die 'self>' Form bevorzugen würden. Natürlich sollten Sie in Objective-C sowieso nicht viel direkten Ivar-Zugriff machen. Vielleicht ist es eine andere Tugend der "Selbst" -Syntax, unattraktiv zu sein. – Chuck
Lol. "denke Haut". Ist diese Haut irgendwie dünn und dick? – Rob