gpt4 book ai didi

objective-c - 如何获得具有编码的类型的大小?

转载 作者:太空狗 更新时间:2023-10-30 03:24:07 24 4
gpt4 key购买 nike

给定一个 Objective-C 类型 type,可以得到 encoding类型的编码和大小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_t type 我们都有

sizeofencodedtype(@encode(type)) = sizeof(type)

这样的功能已经存在了吗?如果没有,一个人怎么可能去 build 一个?

(2) 理想情况下,我们可以反转@encode 映射来进行映射

decode: const char * -> type_t

但这似乎不可能,因为 type_t 不是真正的 C 类型。我想我可以等待 @decode 被添加到语言中,但这不是很现实或时间敏感。但是,难道不能在运行时使用其编码来实例化一个类型吗?

引用资料: Objective-C Runtime Programming Guide - Type Encodings

最佳答案

NSGetSizeAndAlignment()可以为你做这件事。如果您尝试在同一字符串中探索多种类型,这也是一个有用的函数。

关于objective-c - 如何获得具有编码的类型的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com