类别 + 加载计时问题



我有一个类层次结构如下

@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 为我确认滑动是不必要的,我可以打电话给超级。 覆盖类别方法的唯一问题是,如果它在同一类上多次完成。

相关内容

  • 没有找到相关文章

最新更新