Objective-C类扩展与私有方法或变量

时间:2015-03-25 18:11:56

标签: objective-c

我不明白为什么人们使用扩展将变量设为私有而不仅仅是在实现文件中声明它们?

使用扩展名查看此代码一,使用实例变量查看一个代码:

//this is an extension
@interface MyClass () {
  NSString *myInstanceVariable;
}
// ...
@end
or in the class implementation:

@implementation MyClass {
  NSString *myInstanceVariable;
}
// ...
@end

两者都给我实例变量是私有的。为什么我会选择扩展而不是仅仅声明实例变量的第二种方法?

1 个答案:

答案 0 :(得分:0)

如果要在@interface中声明变量,它会向该类用户公开实现的详细信息。

如果要在@implementation中声明变量,它会将其存在保密,并且对于仅导入h文件的人不可见。

编辑:更简洁的答案。见here