11
給出一個Objective-C型type
,人們可以很容易獲得類型的encodingencoding
和大小size
:如何獲得一個具有編碼的類型的大小?
const char *encoding = @encode(type);
size_t size = sizeof(type);
放一點不同,我們有映射
@encode: type_t -> const char *
sizeof: type_t -> size_t
這就提出了兩個問題:
(1)假設不是一個類型,我們只有一個編碼。這將是很好,得到映射
sizeofencodedtype: const char * -> size_t
,從而使每一type_ttype
我們有
sizeofencodedtype(@encode(type)) = sizeof(type)
請問這樣的功能已經存在?如果不是,那麼如何去建設一個呢?
(2)在理想情況下,我們可以顛倒@encode映射,使映射
decode: const char * -> type_t
,但這似乎並沒有因爲type_t成爲可能不是一個真正的C類型。我想我可以等待@decode被添加到該語言,但這不是很現實或時間敏感。但是應該不可能在運行時使用它的編碼實例化一個類型?
參考文獻: Objective-C Runtime Programming Guide - Type Encodings
謝謝!這是_exactly_我所需要的。 –
我花了大概兩個小時試圖找出不同的方式來說這個,並從一個引用的問題偶然發現。謝謝! –