bir Objective-C tipi type
göz önüne alındığında, kolayca Çeşidi encodingencoding
ve boyut size
edinebilirsiniz:nasıl tek tek bir kodlama sahip olduğu sizeof bir tür elde edebilirsiniz?
const char *encoding = @encode(type);
size_t size = sizeof(type);
biraz farklı, biz eşleştirmeleri
@encode: type_t -> const char *
sizeof: type_t -> size_t
Bu iki soru yükseltir var koy :
(1), sadece bir kodlama bilgisi yerine bir türü olan daha olduğunu varsayalım. Elimizdeki her type
type_t
sizeofencodedtype(@encode(type)) = sizeof(type)
böyle bir işlev zaten mevcut mu bunun için bir haritalayan
sizeofencodedtype: const char * -> size_t
böyle elde etmek güzel olur? Eğer değilse, biri nasıl inşa edilir?
(2) İdeal bir haritalayandecode: const char * -> type_t
yapmak @encode eşleme ters olabilir ama gerçek bir C türü değil bu type_t beri mümkün görünmemektedir. Ben dili eklenecek @decode beklemek sanırım, ama bu çok gerçekçi ya zamana duyarlı değil. Ancak, kodlamayı kullanarak çalışma zamanında bir tür oluşturmak mümkün olmaz mı?
Referanslar: Objective-C Runtime Programming Guide - Type Encodings
teşekkür ederiz! Bu ihtiyacım olan _exactly_. –
Bunu söylemenin farklı yollarını anlamaya çalışıyorum muhtemelen iki saat geçirdim ve yönlendiren bir sorudan onun üzerine tökezledi. Teşekkür ederim! –