在Objective-C中,例如不希望放在头文件中的变量,可以将它们放在类扩展名中:
@interface MyClass () {
NSString *myInstanceVariable;
}
// ...
@end
或在类实现中:
@implementation MyClass {
NSString *myInstanceVariable;
}
// ...
@end
它们之间有什么区别吗?
在你发布的第一个例子中,myinstancvariable在接口中声明,但没有显式声明为私有,因此它是受保护的,而不是私有的。默认为"Protected"。
在你发布的第二个例子中,myinstancevvariable是在实现中而不是在接口中声明的,因此它是私有的。
我的偏好是在接口中将它列为@private