0

我想在运行时获取实例的返回值类。我有一个SEL类型 var 来存储选择器。我有一个名为的变量id _instance,它指向一个我知道它执行选择器的实例。在执行该方法之前,我想知道我是否必须这样做:

NSObject* returnValue=[_instance performSelector:_selector withObject:params.params];

或者:

[_instance performSelector:_selector withObject:params.params];

我读过一篇文章,其中有人解释了使用 Objective-C 运行时的方法

Method m = class_getClassMethod([_instance class], _selector);

char ret[256];
method_getReturnType(m, ret, 256);
NSLog(@"Return type: %s", ret);

但是输出并不像 ret 是空的。

实际上,知道它是 void 还是有返回类型就足够了,但我不知道在哪里搜索。我已经阅读了objective-c 运行时参考,但我发现的唯一内容是method_getReturnType.... 任何想法?

4

2 回答 2

2

如果您正在寻找实例方法,则需要使用class_getInstanceMethod而不是class_getClassMethod. 类方法和实例方法显然是不同的东西。

于 2012-05-24T13:56:28.217 回答
0

经过一段时间的搜索,我找到了使用 Spotify 来处理这类东西的库,名称为 MAObjcRuntime,你可以在这里找到它

于 2012-05-31T14:31:38.767 回答