【问题标题】:Instance variables in extension vs implementation扩展与实现中的实例变量
【发布时间】:2013-04-18 16:06:17
【问题描述】:

在 Objective-C 中,例如不想放在头文件中的变量,可以将它们放在类扩展中:

@interface MyClass () {
  NSString *myInstanceVariable;
}
// ...
@end

或在类实现中:

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

它们之间有什么区别吗?

【问题讨论】:

    标签: objective-c instance-variables


    【解决方案1】:

    在您发布的第一个示例中,myInstanceVariable 在接口中声明,但未显式声明为私有,因此它是受保护的,而不是私有的。受保护是默认设置。

    在您发布的第二个示例中,myInstanceVariable 是在实现而不是接口中声明的,因此它是私有的。

    我的偏好是在界面中将其列为@private。

    【讨论】:

    • 不正确。在第一种情况下,它也是私有的。
    • 抱歉,当它实际上是一个匿名类别时,我将其视为常规类接口。该语言需要更多注释,例如 \@extended 或 \@category。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2014-09-21
    • 2014-10-18
    • 2020-04-09
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    相关资源
    最近更新 更多