2

有这样的方法。

- (void)method: (CustomClass)param;

CustomClass继承自NSObject

我在m下面有一个变量,它是该Method方法的结构。我调用method_getArgumentType()来获取这样的参数类型:

char szArgType[100] = {0,};
Method m = ...;
...
method_getArgumentType(m, 2, szArgType, 100);

我打印了szArgType. 它打印@了,但我想打印CustomClass。有没有一种好方法可以在运行时从 a 获取参数的真实对象类类型Method

4

1 回答 1

7

这是不可能的。接口类型(类)仅由编译器使用,并且在对方法签名进行编码时不保留该信息。

您可以在运行时获得的唯一信息是运行时指南的类型编码一章中描述的信息,即参数是否是对象,而不是各种 POD 类型中的任何一种。任何对象的编码都是相同的,无论它的类是什么@,你在那里看到的。(本质上,一切都是id在编译器完成类型检查之后。)

于 2013-01-09T03:32:19.277 回答