0

我处于以下情况:

我已经定义了一个具有属性的类来访问我设置为只读的 activeController

@interface BaseViewController : UIViewController

@property (nonatomic, weak, readonly) UIViewController *activeController;

@end

在类延续中,我将属性定义为读写,因为我希望能够仅在类中设置活动控制器:

@interface BaseViewController ()

@property (nonatomic, weak, readwrite) UIViewController *activeController;

@end

如何使该readwrite属性可从派生类访问?

@interface ChildViewController : BaseViewController 
@end

编译器只看到在派生类中定义为只读的属性,我希望能够在派生类中使用属​​性并在派生类中设置活动视图控制器。

4

2 回答 2

1

您需要将 BaseViewController 的头文件更改为

@interface BaseViewController : UIViewController
{
    __weak UIViewController *_activeController;
}

@property (nonatomic, weak, readonly) UIViewController *activeController;

这将允许您在基础和孩子中继续以下课程

@interface ChildViewController ()

@property (nonatomic, weak, readwrite) UIViewController *activeController;

@end
于 2013-10-09T12:34:42.907 回答
1

除非您确实需要,否则最好不要公开实例变量。

使子类可以访问类的一些附加部分的标准模式是制作一个单独的头文件,例如BaseViewController+Private声明readwrite. 然后,该文件可以被“内部人员”包含,即类及其子类。

于 2013-10-09T12:47:08.243 回答