1

我有一个类层次结构如下

@interface PTLDatasource : NSObject
...
@interface PTLFetchedDatasource : PTLDatasource
...

我想为这些在协议中定义并在类别中实现的类添加特定于平台的扩展:

@protocol PTLTableViewDatasource
- (void)foo;
...
@interface PTLDatasource (TableViewExtensions) <PTLTableViewDatasource>
...
@interface PTLFetchedDatasource (TableViewExtensions) <PTLTableViewDatasource>
...

的基本实现-foo:在 PTLDatasource 类别中完成。但是,我还需要 PTLFetchedDatasource 的自定义实现,-foo:然后可以回退到 PTLDatasource 实现。

目前我正在尝试在PTLFetchedDatasource (TableViewExtensions)in 中调配实现+load,但我遇到了在+loadinPTLFetchedDatasource (TableViewExtensions)之前调用+loadin 的问题PTLDatasource (TableViewExtensions),因此调配失败,因为 PTLDatasource 的实现-foo:尚不存在。

有没有办法解决这个加载时间问题?

我还需要调酒吗?我知道在一个类别中覆盖类成员方法是不行的,但是我可以[super foo:]PTLFetchedDatasource (TableViewExtensions)实现中调用吗?

谢谢。

4

1 回答 1

1

Mike Ash 向我确认了 swizzling 是不必要的,我可以直接打电话给 super。覆盖类别方法的唯一问题是它是否在同一个类上多次完成。

于 2013-09-06T15:17:05.517 回答