我正在对pod的类进行子类化,在这个类中有一个私有实例变量,我想在我的类中公开并使用它:
@interface MySuperClass () {
UIScrollView *_scrollView;
}
通常在公开私有成员或方法时,我会使用前面提到的类别,但我在使用私有实例变量时遇到了问题。我在这里读到关联引用可能会起作用,但我没能让它起作用。
尝试在子类中实现:
- (UIScrollView *)scrollView {
return [self valueForKey:@"_scrollView"]
}
不幸的是,在Objective-C中没有办法声明私有实例变量。
无论您希望子类能够看到什么,都必须在.h
-文件中声明。您所讨论的关联引用以完全相同的方式工作,但它们解决了不同的问题,即在类别中声明实例变量的问题。
这是由于该语言的设计,我认为.m
文件实际上是实现文件,并且任何其他类实际上都不应该关心另一个类的实现,即使具有子类之类的继承关系。
对于该pod类的私有实例变量,您可以选择将其放在一个属性中,或者确实实现一个类别,在其中添加访问它的方法。