我不明白为什么人们使用扩展将变量设为私有而不仅仅是在实现文件中声明它们?
使用扩展名查看此代码一,使用实例变量查看一个代码:
//this is an extension
@interface MyClass () {
NSString *myInstanceVariable;
}
// ...
@end
or in the class implementation:
@implementation MyClass {
NSString *myInstanceVariable;
}
// ...
@end
两者都给我实例变量是私有的。为什么我会选择扩展而不是仅仅声明实例变量的第二种方法?
答案 0 :(得分:0)
如果要在@interface
中声明变量,它会向该类用户公开实现的详细信息。
如果要在@implementation
中声明变量,它会将其存在保密,并且对于仅导入h文件的人不可见。
编辑:更简洁的答案。见here