我想在运行时获取实例的返回值类。我有一个SEL
类型var,我存储了一个选择器。我有一个名为id _instance
的变量,它指向一个我知道它执行选择器的实例。在执行方法之前,我想知道是否必须这样做:
NSObject* returnValue=[_instance performSelector:_selector withObject:params.params];
或:
[_instance performSelector:_selector withObject:params.params];
我看过post where someone explain the way to have that with objective-c runtime:
Method m = class_getClassMethod([_instance class], _selector);
char ret[256];
method_getReturnType(m, ret, 256);
NSLog(@"Return type: %s", ret);
但输出并不像ret是空的。
真的可以知道它是无效还是有返回类型,但我不知道在哪里搜索。我已阅读objective-c runtime reference,但我发现的唯一内容是method_getReturnType...
。有什么想法吗?
答案 0 :(得分:2)
如果您正在寻找实例方法,则需要使用class_getInstanceMethod
而不是class_getClassMethod
。类方法和实例方法显然是不同的东西。
答案 1 :(得分:0)
经过一段时间的搜索,我发现使用Spotify的库就是这种东西,名字是MAObjcRuntime,你可以找到它here