this question中,我正在寻找一种使用定义来确保变量属于某种类型的方法。但是有时候我有这种情况:

- (void) theSituation:(Thinger*)thinger {
    ASSERT_IS_KIND_OF(thinger, Thinger);
    // etc. etc.

然后我开始考虑,仅用于调试目的,能够调用如下代码可能会很好:
- (void) theSituation:(Thinger*)thinger {
    ASSERT_INPUT_PARAMS_ARE_OF_CORRECT_TYPES();
    // etc. etc.

问题是:您可以通过isKindOf检查方法的参数是否为正确的类型(使用#define),以及如何(一般而言)执行此操作?

最佳答案

当您获得方法的参数时(使用另一个答案中提到的method_copyArgumentType),它返回的“类型”要么是C类型(如int,float等),要么只是对象(返回为“@”)。可悲的是,不可能获得一种方法所期望的Objective-C类型-编译时信息会丢失。

找到类似问题的答案here

10-06 13:10