14

以下代码编译:

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

我想知道声明中的花括号@interface是否真的必要。

4

2 回答 2

22

不,该{ }部分不是必需的;没有它,您的代码将编译得很好。这是您声明实例变量的区域,如果您不这样做,您可以将其排除在外。你甚至不需要为你的属性声明 ivars——编译器足够聪明,可以在需要的地方添加它们。

于 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 回答