2

私が必要としているのは、Objective-Cの「id」タイプと「Class」タイプの両方をパラメーターとして受け取るC関数をデクレートすることですが、それ以外は何もしません。

検討:

void the_function(classorid theargument);

この目的を達成するためにtypedefを宣言することを考えました...「id」ポインタまたは「Class」値のいずれかを保持できるもの...次に、C関数でどの値が何であるかを理解します。

それで...私がこの目標を達成するために使用できる方法(またはタイプ?)はありますか?

ありがとう。:)

4

2 に答える 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;
}
于 2012-05-08T17:46:28.173 に答える
1

組合が助けになるかもしれません。

http://www.anyexample.com/programming/cplusplus/example_of_using_union_in_cplusplus.xml

于 2012-05-08T17:00:45.700 に答える