は、Objective-Cのタイプtype
を考えると、人は簡単タイプのencodingencoding
とサイズsize
を得ることができます。どのように1つのエンコーディングを持つ型のサイズを取得できますか?
const char *encoding = @encode(type);
size_t size = sizeof(type);
は少し違った、我々はマッピング
@encode: type_t -> const char *
sizeof: type_t -> size_t
これは、2つの問題を提起してい置きます:
(1)タイプを持つのではなく、エンコーディングのみを持つとします。type
type_tすべてののために、我々は
sizeofencodedtype(@encode(type)) = sizeof(type)
、このような機能がすでに存在することを持っているようにマッピング
sizeofencodedtype: const char * -> size_t
を得ることがいいだろうか?そうでない場合、どのように建物を建てることができますか?
(2)理想的には、マッピング
decode: const char * -> type_t
を作るために@encodeマッピングを反転さでしたが、type_tは、実際のCタイプではないので、これは可能ではないようです。私は@コードが言語に追加されるのを待つことができたと思いますが、それはあまり現実的ではなく、時間に敏感ではありません。しかし、そのエンコーディングを使って実行時に型をインスタンス化することはできませんか?
参考文献: Objective-C Runtime Programming Guide - Type Encodings
ありがとうございました!これは私が必要としていたものです。 –
私はたぶん2時間を費やしてこれを言い方を変えようとしましたが、言及する質問からそれを見つけました。ありがとうございました! –