14

次のコードがコンパイルされます。

@interface MyClass : ParentClass // missing {
// missing }
@property (nonatomic, copy) NSString *myString;
@end

宣言の中括弧@interfaceが実際に必要かどうか疑問に思います。

4

2 に答える 2

22

いいえ、{ }セクションは必要ありません。あなたのコードはそれなしでうまくコンパイルされます。これはインスタンス変数を宣言する領域であり、そうでない場合は自由に省略できます。実際には、プロパティの ivar を宣言する必要さえありません。コンパイラは、必要な場所に ivar を追加するのに十分スマートです。

于 2011-09-06T22:08:59.560 に答える
9

コンパイラは、 @property 宣言をクラスに追加するのに十分賢いです。

これらのブラケットの唯一の用途は、変数をプライベート、保護、または特にパブリックにする場合です。

例:

@interface Example: NSObject {
@public
    int publicVar;
@private
    int privateVar;
    int privateVar2;
@protected
    int protectedVar;
}
@end
于 2012-04-19T10:33:35.220 に答える