2

このような方法があります。

- (void)method: (CustomClass)param;

CustomClassから継承しNSObjectます。

m以下に、Methodそのメソッドの構造体である変数があります。method_getArgumentType()次のような引数の型を取得するために呼び出しました。

char szArgType[100] = {0,};
Method m = ...;
...
method_getArgumentType(m, 2, szArgType, 100);

印刷しszArgTypeました。印刷@しましたが、印刷したいですCustomClassMethod実行時にパラメータの実際のオブジェクト クラス タイプを取得する良い方法はありますか?

4

1 に答える 1

7

これを行うことはできません。インターフェイスの型 (クラス) はコンパイラによってのみ使用され、メソッド シグネチャをエンコードするときにその情報は保持されません。

実行時に取得できる唯一の情報は、Runtime Guide のType Encodings の章で説明されている内容です。これは、パラメーターがさまざまな POD 型ではなくオブジェクトであるかどうかです。オブジェクトのエンコーディングは@そこに表示されるクラスに関係なく同じです。(基本的に、すべてはidコンパイラが型チェックを行った後に行われます。)

于 2013-01-09T03:32:19.277 に答える