如何在Objective-C中访问受保护的变量

时间:2014-08-20 02:37:09

标签: ios objective-c

我希望有一个只对其子类可见的变量,它与protected中的Java变量完全相似。

我在父母的实施档案

上尝试过这样的话
@interface ParentClass (){
   NSArray *_protectedVar
}

但遗憾的是,只要我致电protectedVar

,就无法看到super.protectedVar

如果我错了,请纠正我,但我不想将@properties用于该变量,因为它会使该变量公开。

这是我的子类的头文件看起来像@interface SubClass : ParentClass

2 个答案:

答案 0 :(得分:1)

您发布的代码在Objective-C 类扩展中声明了一个实例变量,因此变量的默认可见性为private。您可以使用可见性修改器来更改ivar的可见性,如下所示:

@interface ParentClass ()
{
@protected
    NSArray *_protectedVar
}

答案 1 :(得分:-1)

如果你有这个

ParentClass.h

@interface ParentClass : NSObject{
   NSArray *_protectedVar
}

然后就像你访问普通的ivar一样,直接使用_protectedVar

但我建议您使用带有私有标题的属性

Parent.h

@interface Parent : NSObject

@property id publicProperty;

@end

Parent_Protected.h

@interface Parent (Protected)

@property id protectedProperty

@end

只有普通班#import "Parent.h",他们无法看到受保护的财产。 但是子类可以#import "Parent_Protected.h"并使用self.protectedProperty

的受保护属性