7

私はこのコードを示す本の例を見ました:

@implementation ViewController
{
    NSString *name;
}

でこれを宣言してみません@interfaceか?@implementationの代わりに変数を宣言することの違いは何@interfaceですか?NSStringなぜこれをスコープで宣言するのですか?

4

1 に答える 1

8

セクションでivarを宣言することの利点は、@implementationカプセル化が優れていることです。そうすれば、ivarは.hファイルに表示される必要がないため、ヘッダーファイルのみを表示するクラスの外部ユーザーには表示されません。これにより、クラスの内部実装がより適切に隠されます。

一般的に言って、プロパティが自動合成されたivarを持つことができ、他のivarをブロックで直接宣言できるようになったので、 (下位互換性を除いて)@implementationでivarを宣言する必要がある理由はわかりません。@interface

なぜこのNSStringをスコープで宣言するのですか?

これがインスタンス変数を宣言する唯一の方法だからです。それ以外の場合は、同じファイル内のどこからでもアクセスできる変数を宣言します(彼のコメントでリンクされているBoltClockの質問を参照してください)。

于 2011-10-30T19:35:32.753 に答える