美文网首页
swift、oc、c++混编

swift、oc、c++混编

作者: 太空蛙 | 来源:发表于2022-05-23 00:14 被阅读0次

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

    相关文章

      网友评论

          本文标题:swift、oc、c++混编

          本文链接:https://www.haomeiwen.com/subject/nwblprtx.html