ほとんどのObjective-Cコーダーは、インスタンス変数に直接アクセスするときにself->ivar
構文を使用しないことに気付きました。私が見ているほとんどのサンプルコードは、のないインスタンス変数を参照するだけです。私はインスタンス変数を参照するのはむしろ混乱していると思います。インスタンス変数はインスタンス変数であり、単に現在のスコープの変数ではないことを明確にする必要はありません。インスタンス変数に直接アクセスするときにself-> ivarを使用する
私はのようなものを書きたいように私は感じる:
- (void)dealloc {
[self->someVar release];
[self->anotherVar release];
[super dealloc];
}
または
- (void)setVar:(Foo *)newVar {
[self->var autorelease];
self->var = [newVar retain];
}
は機会の全体の多くはありません、我々はこれまでにも、使用しなくても、当社のインスタンス変数にアクセスする必要があるときカプセル化のためのアクセッサですが、deallocやカスタムgetterやsetterのようにする必要があることもあります。
私はこのために悪い人/プログラマーですか?このようなコードを書いていないという理由が本当にあるのでしょうか?このようにするのは本当に良いと感じているからです。
私が言ったように、それはより短いです。私はそれを好むが、短い識別子が常に優れているという議論をすることはできないが、私はすべてx、y、zのコードを維持することは嫌いだ。それは本質的にあなたの幸せな媒体を見つける場所の問題です。私は、Pythonがおそらく 'self->'形式を好むだろうと思う。もちろん、Objective-Cで直接ivarアクセスを行うべきではありません。おそらく魅力的でないかもしれないということは、 'self->'構文のもう一つの美徳です。 – Chuck
Lol。 "肌を考える"。それは薄くて厚いのですか? – Rob