有没有办法检查哪个类别属于某个方法?

时间:2014-03-30 18:08:42

标签: objective-c runtime

例如,我们有两个类别:

@interface NSString (Utilities)
- (void)someMethod;
@end

@interface NSString (RBTree)
- (void)someOtherMethod;
@end

我们需要这样的东西:

if (category that contains someMethod is Utilities){
   // ... anything here ...
}

好奇。

1 个答案:

答案 0 :(得分:2)

你有多好奇?

让我们开始你的旅程:

Objective C Runtime Reference为类别定义了类型Category,但它本身并不提供任何接受或返回此类型值的函数。这表明某种类别结构确实存在,至少在某些时候存在,但对其进行操作的功能并未公开。

但为什么要公开这个类型,如果不在其他地方引用它??

动态模块加载(Dynamic Loadingobjc-load.h)提供了三个函数,它们采用一个回调函数,该函数传递类型为Category的参数;所以有更多证据表明存在一些描述类别的结构,至少在加载过程中是这样。

您的下一站可能是Apple的开源存储库...

玩得开心!