繁体   English   中英

将受保护的Objective-C实例变量公开给子类

[英]Expose a protected Objective-C instance variable to subclass

我将一个Pod的类子类化,在这个类中,有一个私有实例变量,我想在我的类中公开和使用:

@interface MySuperClass () {
    UIScrollView *_scrollView;
}

通常,在公开私有成员或方法时,我会使用类似此处前面提到的类别的类别,但是在使用私有实例变量进行处理时遇到问题。 在这里阅读到关联引用可能有效,但是我无法使其有效。

尝试在子类中实施:

- (UIScrollView *)scrollView {
    return [self valueForKey:@"_scrollView"]
}

不幸的是,在Objective-C中无法声明私有实例变量。

无论您希望子类能够看到什么,都必须在.h文件中声明。 您所讨论的关联引用的工作方式完全相同,但是它们解决了一个不同的问题,即在category中声明实例变量的问题。

这是由于该语言的设计所致,我认为这是因为.m文件实际上是实现文件,并且没有其他类实际上应该关心另一个的实现,即使具有子类之类的继承关系也是如此。

为您提供该Pod类的私有实例变量的选项是将其放在属性中,或者实际上实现一个类别 ,在其中添加访问它的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM