2

@private多くのAppleのインターフェースは、インスタンス変数宣言の前に使用していることに気づきました。これには適切な設計上の理由がありますか?それは私がすべきことですか?

4

3 に答える 3

4

プライベートインスタンス変数は、インターフェイスを実装から分離するために使用されます。Objective-Cでは、クラス宣言ですべてのインスタンス変数を表示する必要があるため、サブクラスが内部実装の一部であるサブクラスにアクセスできないようにする方法が必要ですそうしないと、他のプログラマーがこれらの内部変数に依存するコードを記述して、クラス設計者が既存のコードを壊さずにクラス内部に変更を加えることができなくなる可能性があります。

別の見方をすれば、 privateとマークされていないインスタンス変数はサブクラスプログラマーとの契約の一部ですが、privateとマークされているインスタンス変数はそうではありません。

つまり、インスタンス変数には通常、プライベートとしてマークを付けて、アクセサメソッドを介してのみアクセスできるようにする必要があります。そうしないと、誰かがあなたのクラスのサブクラスを簡単に記述し、インスタンス変数をパブリックにするためのアクセサーを作成するだけで済みます。

于 2009-12-19T17:16:40.477 に答える
1

サブクラスが変数にアクセスできないようにする場合は、サブクラスに@privateのマークを付けます。

于 2009-12-19T16:59:45.760 に答える
0

これを行う別の方法は、@implementationセクションでインスタンス変数を宣言することです。このような変数は暗黙的にプライベートです。出典:Kochan:Programming in Objective-C、第4版。p。199.したがって、e.Jamesが述べているように、クラス宣言がすべてのインスタンス変数を表示しなければならないというのは真実ではありません。

@interfaceでインスタンス変数を宣言する唯一の理由は、それらを派生クラス(サブクラス)に継承できるようにするためです。

于 2012-01-16T19:01:07.783 に答える