2

我需要在运行时获取方法的参数类。

有一种方法

- (const char *)getArgumentTypeAtIndex:(NSUInteger)idx;

在 NSMethodSignature 中,但它只返回 @ 如果它是对象。我需要获取这个对象的类,实际检测这个对象是否是 NSArray。实现这一目标的可能性有哪些?

4

3 回答 3

3

很久以前我试过这个。所以花了一些时间回复搜索代码。无论如何,这里是信息。

NSMethodSignature 类的getArgumentTypeAtIndex 和methodReturnType 的返回数据将是“AC 字符串编码Objective-C 类型编码中方法的返回类型”。- 根据文档。

所以需要检查返回的char数据,通过下表找到合适的类型。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html

我想检查编码表会给你答案!

快乐编码:)

于 2012-08-17T11:24:28.480 回答
2

你试过这个吗?

if ([object_you_wanna_check isKindOfClass:([NSArray class])])
于 2012-08-17T11:08:57.123 回答
0

尝试

if ([obj isKindOfClass:[MyMclass class]]) {
     //enter code here
}

或者

if ([obj respondToSelector:@selector(myRequiredSelector)]) {
     //enter code here
}

或使用https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ObjCRuntimeRef/Reference/reference.html中描述的高级界面

于 2012-08-17T11:14:22.443 回答