swift、oc、c++混编

swift不能直接调用c++,需要通过新建oc文件来桥接,并且实际应用场景中一般会涉及到oc和c++的数据传输。
一、用oc重新封装一遍c++中的数据模型

//c++
struct Model {
  int a;
};

//oc
@interface BarcodeResultItem : NSObject
@property (nonatomic, assign) int a;
@end

二、使用NSValue *oc_obj = [NSValue valueWithBytes:&output objCType:@encode(namespace::obj)],但是如果保护struct时要注意其中的坑(NSValue转回c++结构体后会出现释放多次的bug,另外NSValue对应的这块内存上的内容也可能已经被修改了,巨坑!)

std::string和NSString互转
//NSString-->std::string
std::string str = std::string([@"str" UTF8String]);
//std::string--->NSString
NSString *str = [NSString stringWithCString:"c++.string".c_str() encoding:NSUTF8StringEncoding];
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容