【发布时间】:2015-09-14 10:25:00
【问题描述】:
我有一个根类和多个子类。 我还有一个 DataManager 类,它应该包含各种类别的静态方法,这些方法作用于这个根类的特定子类。
假设根类 R,子类是 C1 和 C2。
对于 C1,我有一个名为 DataManager+C1 的类别。
对于 C2,我有一个名为 DataManager+C2 的类别。
我有一个基本的 DataManager 类,我在其中 声明了这个方法 - 可以从任何地方访问它 - 并且没有其他声明:
//DataManager.h
+ (NSDictionary *) Method1 : (DataModelRoot*) R;
//Note that R is my root class. Individual class implementations belong to DataManager+C1.m, DataManager+C2.m etc.
Method1的实现在于DataManager+C1和DataManager+C2。
但我看不到多态行为。
也就是说,当期望调用 DataManager+C2 的 Method1 时,调用 DataManager+C1 内部的调用,尽管调用本身是从 DataManager+C2 源文件启动的。 (虽然调用者可以是任何 DataManager 类别 - 这是一种极端情况)。
位于同一类层次结构中的对象的类别数量如何解决函数调用?
PS: 再次注意,上述方法 Method1 仅在一个类(普通 DataManager.h)的 .h 文件中公开,以根类作为参数。我认为这将确保使用子对象类型正确调用,但它失败了。
【问题讨论】:
-
类方法怎么调用?请发布实际调用的代码。
标签: ios objective-c oop polymorphism objective-c-category