次のコードがコンパイルされます。
@interface MyClass : ParentClass // missing {
// missing }
@property (nonatomic, copy) NSString *myString;
@end
宣言の中括弧@interface
が実際に必要かどうか疑問に思います。
次のコードがコンパイルされます。
@interface MyClass : ParentClass // missing {
// missing }
@property (nonatomic, copy) NSString *myString;
@end
宣言の中括弧@interface
が実際に必要かどうか疑問に思います。
いいえ、{ }
セクションは必要ありません。あなたのコードはそれなしでうまくコンパイルされます。これはインスタンス変数を宣言する領域であり、そうでない場合は自由に省略できます。実際には、プロパティの ivar を宣言する必要さえありません。コンパイラは、必要な場所に ivar を追加するのに十分スマートです。
コンパイラは、 @property 宣言をクラスに追加するのに十分賢いです。
これらのブラケットの唯一の用途は、変数をプライベート、保護、または特にパブリックにする場合です。
例:
@interface Example: NSObject {
@public
int publicVar;
@private
int privateVar;
int privateVar2;
@protected
int protectedVar;
}
@end