私はObjCアクセサーと合成アクセサーに関する多くの質問を検索しましたが無駄でした。この質問は、「問題の解決に役立つ」質問です。私は1つの答えを期待していませんが、私はむしろ議論を検討する専門家を探しています。
Cocoa Touchクラスでは、次のようなコードを記述します(ここsoundEffects
で、は合成されたNSArrayプロパティです)。
id foo = [self.soundEffects objectAtIndex:1];
同僚から、上記がこの行よりも優れている理由を説明するように求められました。
id foo = [soundEffects objectAtIndex:1];
まあ、機能的には、それは違いはありません。
前者に対する私の議論は次のとおりです。
self.soundEffects
コードで作業している他のすべてのコーダーに、これはローカルスコープの変数ではなくiVarであることを通知します。soundEffects
必要に応じて、ゲッターアクセサーにカスタムロジックを配置できます。具体的な理由はありませんが、Obj-Cで1年間働いた後、それは正しいことのように「感じ」ます。
彼は引数#1と#2を有効なものとして受け入れますが、対位法も与えます。
これは単なるコード膨張ではありませんか?
クラスは、それ自体でメソッド(ゲッター)を呼び出さなくても、独自のiVarと直接通信することを許可されるべきではありませんか?
テイカーはいますか?