Objective-C 从另一个类访问 @private 实例变量

Posted

技术标签:

【中文标题】Objective-C 从另一个类访问 @private 实例变量【英文标题】:Objective-C Access @private instance variables from another class 【发布时间】: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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

可以,但你不应该。如果它被声明为@private,通常是有充分理由的。 @darvids0n 我不是在质疑你是否应该这样做,这很明显,我只是想知道你是否可以。

以上是关于Objective-C 从另一个类访问 @private 实例变量的主要内容,如果未能解决你的问题,请参考以下文章

从另一个类调用委托方法

C ++子类访问修饰符?

如何从另一个对象访问我的 Application Delegate 的窗口访问器方法?

从另一个类访问 IBOutlet

从另一个类访问 TextView

从另一个类访问 UI 图像