1
我想获得所有类型的参数值,如何处理结构类型?va_arg处理结构为iOS
for (NSUInteger i = 2; i < methodSignature.numberOfArguments; i++)
{
const char *argumentType = [methodSignature getArgumentTypeAtIndex:i];
switch(argumentType[0]) {
case 'L':
case 'q':
case 'l':
case 's':
case 'S':
case 'B':
case 'b':
case 'i':
obj = @(va_arg(args, int));
break;
case 'Q':
obj = @(va_arg(args, unsigned long long));
break;
case 'I':
obj = @(va_arg(args, unsigned int));
break;
case 'f':
case 'd':
obj = @(va_arg(args, double));
break;
case 'C':
obj = @(va_arg(args, unsigned char));
break;
case 'c':
obj = @(va_arg(args, char));
break;
case '{':
{
//how could deal with struct object here?
obj = @"not support";
break;
}
// 其他id类型
default: {
obj = va_arg(args, id);
if (isCoustomObjcBy(obj))
{
obj = getPropertiesAndTypesForClassObjc(obj);
}
break;
}
}
}