2012-05-08 32 views
2

我需要的是减少一个C函数,该函数接受Objective-C'id'类型和'类'类型作为参数,但除此之外没有别的。声明一个具有两种类型的typedef

考虑:

空隙the_function(classorid theargument);

我想到了声明一个typedef来实现这个目的......这个东西既可以包含'id'指针,也可以包含'Class'值......然后我会弄清楚C函数的值是什么。

所以......有没有什么方法(或类型?)我可以使用它,让我实现这个目标?

谢谢。 :)

+2

所以你想要一个参数可以是两种不同的类型之一?为什么?你想解决什么问题? –

回答

1

由于类本身由对象在ObjC表示,并且id是“通用对象”类型,可以在实际上使用id作为类型为指针的类。使用id参数定义您的函数将允许您传递两个实例和Class对象。你在这个功能里面做什么(你将如何区分它们)是你的业务。

static void doThatThingYouDo(id obj) { 

    NSLog(@"%@", obj); 
} 

int main(int argc, const char * argv[]) 
{ 

    @autoreleasepool { 

     Class c = [NSString class]; 
     NSString * s = @"Rigatoni"; 

     id ci = c; 

     doThatThingYouDo(c); 
     doThatThingYouDo(s); 


    } 
    return 0; 
} 
+0

+1正确答案。对不起,我不能给你另一个“Rigatoni”的:) :) – Saphrosit

+0

没关系;它的美味是它自己的奖励! –

+0

这正是我需要知道的。干杯! :) –

相关问题