Objective c返回类型开关

时间:2011-10-21 04:14:19

标签: objective-c types selector

我想使用选择器的返回类型来确定它在我的代码中的使用方式是否有一种方法可以区分目标c中的返回类型。我将举例说明。

SEL selectors[]=
{@selector(method1),
... //each method returns a different type
@selector(methodn);}  

for (SEL sel in selectors)  
    {
    switch [[self performSelector:sel]/*idk something here maybe?*/]
        {
        case int:
            //do some stuff
        ...
        case NSString *:
            //do some other stuff
        }
     }

在此先感谢我找不到任何关于目标c

的内容

2 个答案:

答案 0 :(得分:5)

您可以在objc运行时通过method_copyReturnType执行此操作。

但是,返回和参数的objc类型都是相同的(最后我检查过),这样运行时不会返回带有描述“NSArray”的类型 - 它只是objc类型的标识符。尽管如此,该详细程度对于intNSString情况来说足够具有描述性,您可以使用NSObject实例的classisKindOfClass:(等)实例方法来确定一旦掌握了它就会输入它。

答案 1 :(得分:0)

您可以使用NSMethodSignature获取方法的-methodSignatureForSelector:。然后,您可以使用-methodReturnType对象中的NSMethodSignature获取返回类型。如果不需要,请不要乱用运行时​​。