类别+加载计时问题

时间:2013-09-06 14:58:27

标签: ios objective-c objective-c-runtime swizzling

我有一个类层次结构如下

@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)+load中的实施,但我遇到+load PTLFetchedDatasource (TableViewExtensions)之前调用+load的问题在PTLDatasource (TableViewExtensions)中,由于-foo:的PTLDatasource实现尚不存在,所以调配失败。

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

我甚至需要调皮吗?我知道在一个类别中覆盖类成员方法是禁忌,但我可以从[super foo:]实现中调用PTLFetchedDatasource (TableViewExtensions)吗?

感谢。

1 个答案:

答案 0 :(得分:1)

迈克·阿什向我证实,调情是不必要的,我可以打电话给超级。覆盖类别方法的唯一问题是如果它在同一个类上多次完成。