【问题标题】:Objective-C class extensions vs private method or variable [duplicate]Objective-C类扩展与私有方法或变量[重复]
【发布时间】:2015-03-25 18:11:56
【问题描述】:

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

看看这段代码,一个使用扩展,一个使用实例变量:

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

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

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

【问题讨论】:

标签: objective-c


【解决方案1】:

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

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

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

【讨论】:

  • 这如何回答这个问题?这没有试图回答为什么要使用一种或另一种方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-08
  • 2013-10-09
  • 2020-11-07
  • 2012-07-05
  • 2016-05-07
  • 2016-05-03
  • 1970-01-01
相关资源
最近更新 更多