#define GetNSValueFromCType(cValue) ([NSValue value:&cValue withObjCType:@encode(typeof(cValue))])
#define SetCValueFromNSValue(ocValue, cValue) [ocValue getValue:&cValue]
使用方法如下:
int count = 10;
NSValue *value = GetNSValueFromCType(count);
int newCount;
SetCValueFromNSValue(value, newCount);
Vector和NSArray之间的转化
#define GetArrayFromVector(vec) ({\
NSMutableArray *arr = [NSMutableArray array];\
for(int i = 0; i < vec.size(); i++)\
{\
NSValue *value = GetNSValueFromCType(vec[i]);\
if (value != nil)\
[arr addObject:value];\
}\
[arr count] == 0 ? nil : arr;\
})
#define SetVectorFromArray(vec, type, arr) {\
for(int i = 0; i < [arr count]; i++)\
{\
type _value;\
SetCValueFromNSValue([arr objectAtIndex:i], _value);\
vec.push_back(_value);\
}\
}
使用方法:
struct hello
{
int a;
int b;
};
vector<hello> aVector;
hello a;
a.a = 10;
a.b = 100;
hello b;
b.a = 20;
b.b = 200;
aVector.push_back(a);
aVector.push_back(b);
NSArray *myArr = NdGetArrayFromVector(aVector);
vector<hello> bVector;
NdSetVectorFromArray(bVector, hello, myArr);