声明一个有两种类型的typedef

时间:2012-05-08 16:56:58

标签: objective-c c

我需要的是缩小一个C函数,该函数同时接受Objective-C'id'类型和'Class'类型作为参数,但没有别的。

考虑:

void the_function(classorid theargument);

我想到声明一个typedef来实现这个目的......可以保存'id'指针或'Class'值...然后我会弄清楚我的C函数是什么值。

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

感谢。 :)

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分: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;
}