这是我的问题。

假设我有一个名为WebServiceBase.h的类。我需要在名为NSString * requestData的类中添加一个iVar。但是我不需要将该iVar添加到头文件中并使其对外部人员可见。 (如果我将其作为类库分发)

另外,我还需要能够访问从WebServiceBase.h扩展的其他类中的requestData iVar。 (这些扩展类是我编写的。不是来自外部人员的)

我尝试在类扩展中声明requestData iVar。但是,扩展类看不到它。

有什么解决办法吗?我需要保护我的数据并使它对外界隐藏。

最佳答案

您可以通过@protected关键字将ivars定义为受保护的,这意味着您的类和所有子类都可以毫无问题地访问它,但是编译器将不允许其他不从基类继承的类使用它:

@interface Foo : NSObject
{
@protected
    NSObject *a;
}

如此简单,并且已经为您提供了Objective-C可以提供的所有安全性。

关于iphone - objective-c -隐藏iVars,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11707495/

10-12 14:25