我有一个类层次结构如下
@interface PTLDatasource : NSObject
...
@interface PTLFetchedDatasource : PTLDatasource
...
我想为这些类添加特定于平台的扩展,这些类在协议中定义并在类别中实现:
@protocol PTLTableViewDatasource
- (void)foo;
...
@interface PTLDatasource (TableViewExtensions) <PTLTableViewDatasource>
...
@interface PTLFetchedDatasource (TableViewExtensions) <PTLTableViewDatasource>
...
-foo:
的基本实现是在 PTLDatasource 类别中完成的。 但是,我还需要在 PTLFetchedDatasource 中自定义-foo:
实现,然后可以回退到 PTLDatasource 实现。
目前,我正在尝试在 +load
中以 PTLFetchedDatasource (TableViewExtensions)
+load
的方式进行+load
重排,但我遇到了在 PTLDatasource (TableViewExtensions)
中调用 PTLFetchedDatasource (TableViewExtensions)
中的的问题,因此重排失败,因为 -foo:
的 PTLDatasource 实现尚不存在。
有没有办法解决这个加载时序问题?
我甚至需要刷卡吗? 我知道覆盖类别中的类成员方法是不行的,但是我可以从PTLFetchedDatasource (TableViewExtensions)
实现中调用[super foo:]
吗?
谢谢。
Mike Ash 为我确认滑动是不必要的,我可以打电话给超级。 覆盖类别方法的唯一问题是,如果它在同一类上多次完成。