最近接手的项目是C++和OC混编的,核心业务调用的是C++静态库提供的接口。为了方便项目使用,专门用OC封装了C++的接口作为桥接层,并且定义了相应的宏来做类型转换。
//OC 转 C++
//NSString 转 string
#define STRING_FROM_OC_TO_CPP(cpp, oc) (cpp) = [(oc ? oc : @"") UTF8String]
//NSInteger 转 int
#define INTERGER_FROM_OC_TO_CPP(cpp, oc) (cpp) = (int)(oc)
//CGFloat 转 double
#define CGFLOAT_FROM_OC_TO_CPP(cpp, oc) (cpp) = (double)(oc)
// C++ 转 OC
//string 转 NSString
#define STRING_FROM_CPP_TO_OC(oc, cpp) (oc) = [NSString stringWithUTF8String:(cpp).c_str()]
//int 转 NSInteger
#define INTERGER_FROM_CPP_TO_OC(oc, cpp) (oc) = (NSInteger)(cpp)
//double 转 CGFloat
#define CGFLOAT_FROM_CPP_TO_OC(oc, cpp) (oc) = (CGFloat)(cpp)