我正在继承一个pod的类,在这个类中有一个私有的实例变量,我想在我的类中公开和使用它:
@interface MySuperClass () {
UIScrollView *_scrollView;
}
通常在暴露私有成员或方法的情况下,我会使用像之前提到的here之类的类别,但我在使用私有实例变量时遇到问题。我读过here关联引用可能有用,但我无法使它工作。
答案 0 :(得分:6)
尝试在子类中实现:
- (UIScrollView *)scrollView {
return [self valueForKey:@"_scrollView"]
}
答案 1 :(得分:-1)
不幸的是,在Objective-C中,没有办法声明私有实例变量。
无论您希望子类能够看到什么,您都必须在.h
- 文件中声明。您所谈论的关联引用以完全相同的方式工作,但它们解决了另一个问题,即在类别中声明实例变量。
这是由于语言的设计,我认为.m
文件实际上是实现文件的方式是有道理的,其他类实际上并不应该关心另一个的实现,即使是继承关系,如子类化。
使用该pod类的私有实例变量的选项是将其放在属性中,或者实际实现 category ,您可以在其中添加访问它的方法。