使用clang和objective-c我想知道我是否可以获得一个描述潜在空参数类型的可打印字符串(即仅编译时类型信息。)
例如:
- (void)myFunc:(NSString *)aNilString {
NSLog(@"%s", __typeof__(aNilString));
}
显然这不起作用,因为 __typeof__ 让我得到实际类型,而不是字符串。在 C++ 中,我们有 typeid,它返回一个 std::type_info,但该名称被破坏,例如“P12NSString*”而不是“NSString*”。
理想情况下,我想要一些可以传递给 objc_getClass() 之类的函数的东西。有没有办法得到我想要的?
编辑:我不想编译为 C++,所以这个解决方案出来了:
abi::__cxa_demangle(typeid(*aNilString).name(), 0, 0, 0));