私はこのコードを示す本の例を見ました:
@implementation ViewController
{
NSString *name;
}
でこれを宣言してみません@interface
か?@implementation
の代わりに変数を宣言することの違いは何@interface
ですか?NSString
なぜこれをスコープで宣言するのですか?
私はこのコードを示す本の例を見ました:
@implementation ViewController
{
NSString *name;
}
でこれを宣言してみません@interface
か?@implementation
の代わりに変数を宣言することの違いは何@interface
ですか?NSString
なぜこれをスコープで宣言するのですか?
セクションでivarを宣言することの利点は、@implementation
カプセル化が優れていることです。そうすれば、ivarは.h
ファイルに表示される必要がないため、ヘッダーファイルのみを表示するクラスの外部ユーザーには表示されません。これにより、クラスの内部実装がより適切に隠されます。
一般的に言って、プロパティが自動合成されたivarを持つことができ、他のivarをブロックで直接宣言できるようになったので、 (下位互換性を除いて)@implementation
でivarを宣言する必要がある理由はわかりません。@interface
なぜこのNSStringをスコープで宣言するのですか?
これがインスタンス変数を宣言する唯一の方法だからです。それ以外の場合は、同じファイル内のどこからでもアクセスできる変数を宣言します(彼のコメントでリンクされているBoltClockの質問を参照してください)。