我希望有一个只对其子类可见的变量,它与protected
中的Java
变量完全相似。
我在父母的实施档案
上尝试过这样的话@interface ParentClass (){
NSArray *_protectedVar
}
但遗憾的是,只要我致电protectedVar
super.protectedVar
如果我错了,请纠正我,但我不想将@properties
用于该变量,因为它会使该变量公开。
这是我的子类的头文件看起来像@interface SubClass : ParentClass
答案 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