2012-05-24 356 views
0

我想在运行时获取实例的返回值类。事情是,我有一个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...。任何想法?

+1

你真的不想使用这种自省的任何东西,但教育实验。沿着这条道路走了疯狂和许多维修噩梦。 – bbum

+0

感谢您的广告!如果你对如何做到这一点有更好的建议,我愿意接受;) – Jpellat

+0

你想做什么?即你为什么需要知道这个?可能值得一个新的问题。 – bbum

回答

2

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

+0

完美!谢谢 – Jpellat

0

搜索过了一会儿,我发现,使用Spotify的对这种东西的图书馆,名称是MAObjcRuntime,你可以发现它here

相关问题