Ho notato che la maggior parte dei codificatori Objective-C non utilizza mai la sintassi self->ivar
quando accede direttamente alle variabili di istanza. La maggior parte del codice di esempio che vedo fa semplicemente riferimento alla variabile di istanza senza self->
. Penso che sia piuttosto complicato fare riferimento a una variabile di istanza senza chiarire che si tratta di una variabile di istanza e non semplicemente una variabile dell'ambito corrente.Utilizzo di auto-> ivar quando si accede direttamente alle variabili di istanza
mi sento come voglio scrivere cose del genere:
- (void)dealloc {
[self->someVar release];
[self->anotherVar release];
[super dealloc];
}
o
- (void)setVar:(Foo *)newVar {
[self->var autorelease];
self->var = [newVar retain];
}
non ci sono un sacco di occasioni in cui abbiamo mai nemmeno dovremmo accedere alle nostre variabili di istanza senza utilizzare un accessor per l'incapsulamento, ma a volte abbiamo bisogno di come in dealloc, o in getter e setter personalizzati.
Sono una persona cattiva/programmatore per fare questo? C'è qualche buona ragione per non scrivere codice come questo? Perché è davvero bello farlo in questo modo.
Come ho detto, è più breve. Lo preferisco, ma non potrei rendere l'argomento secondo cui gli identificatori più brevi sono sempre migliori, però - odio mantenere il codice che è tutto x, yez. Quindi è essenzialmente una questione di dove si trova il tuo mezzo felice. Sospetto che i pitonisti probabilmente preferirebbero la forma 'self->'. Ovviamente, non dovresti fare l'accesso diretto a ivar molto spesso in Objective-C, comunque. Forse essere poco attraenti è un'altra virtù della sintassi 'self->'. – Chuck
Lol. "pensa la pelle". Quella pelle è magrissima e spessa? – Rob