2012-05-08 2 views
2

Мне нужно, чтобы объявить функцию C, которая принимает как тип Objective-C 'id', так и 'Class' в качестве параметра, но ничего больше.Объявление типа 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 для правильного ответа. Извините, я не могу дать вам +1 для «Rigatoni» :) – Saphrosit

+0

Это нормально; его вкусность была его собственной наградой! –

+0

Это именно то, что мне нужно было знать. Ура! :) –

Смежные вопросы