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;
}
}
}