エンコードされた型
つまりはNSMethodSignature-getArgumentTypeAtIndex:で引数の型、NSMethodSignature-methodReturnType:で戻り値の型が戻るのだが、char*で戻る訳であって最後は文字比較になってしまうのが格好悪い。
格好悪いなんて書いたが、それは違う。やはり私の無知だった。
Objective-C Runtime Programming Guide: Type Encodings
getArgumentTypeAtIndex:や-methodReturnType:で戻るchar*はいわゆるメタキャラクタであり、引数の型をエンコードして文字列で表したものなのである。
c char i int s short l long q long long C unsigned char I unsigned int S unsigned short L unsigned long Q unsigned long long f float d double B C++のbool v void * 文字列(char*) @ オブジェクト (静的に型定義されているまたはidとして型定義されているもの) # クラスオブジェクト(Class) : メソッドセレクタ(SEL) [配列型] 配列 {名前=型...} 構造体 (型...) 共用体 bnum num ビットフィールド ^型 型へのポインタ ? 不明な型(関数ポインタ) r const n in N inout o out O bycopy R byref V oneway
1文字のメタキャラクタで引数の型を表すのは、元々どういう意図があったのだろう。