【问题标题】:Objective-C Access @private instance variables from another classObjective-C 从另一个类访问 @private 实例变量
【发布时间】:2012-01-23 05:26:42
【问题描述】:

我一直在查看this question,并在其中一个答案中遇到了以下代码

@interface MyClass : NSObject
{
    @private
    int someVar;  // Can only be accessed by instances of MyClass

    @public
    int aPublicVar;  // Can be accessed by any object
}
@end

是否可以从任何其他类(包括派生类)访问someVar

【问题讨论】:

    标签: objective-c access-modifiers private-members


    【解决方案1】:

    没有。这正是@private 的意思。编译器明确禁止任何其他类(甚至是子类)访问该 ivar。

    @public 表示任何人都可以访问 ivar,@protected 表示子类可以访问它,但其他类不能。

    【讨论】:

      【解决方案2】:

      与大多数动态语言一样,您可以在 Objective C 中获得这些信息,但是,这很痛苦。 Look here for an example.

      【讨论】:

      • 可以,但你不应该。如果它被声明为@private,通常是有充分理由的。
      • @darvids0n 我不是在质疑你是否应该这样做,这很明显,我只是想知道你是否可以。
      猜你喜欢
      • 2011-07-26
      • 2014-03-16
      • 2011-01-12
      • 2011-11-02
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      相关资源
      最近更新 更多