说明
最近做的一个项目使用到了别人的一个算法解析类,不过这个类是他那边用C++实现的。这就涉及到了C++与OC之间的交互了。
OC调用C++
这个比较简单,需要提的一点就是把调用类.m文件改成.mm 然后直接new被调用的类,访问属性或方法直接用”->”
C++调用OC
这个就比较麻烦一点了,需要一个OC的桥接类和一个头文件,直接上代码吧
.h
1 | #import <Foundation/Foundation.h> |
.m
1 | #import "OCClass.h" |
创建头文件OCClass-Header 算是定义一个接口吧
1 |
|
C++
在.h中首先导入OC中创建的一个头文件OCClass-Header
对外声明一个变量空指针类型,比如myOC,最终初始化时就是创建的那个桥接类
再通过头文件里定义的interface 声明需要调用OC中的方法
.h
1 | public: |
.cpp
1 |
|
这样就实现了在C++中调用OC的功能
OC中初始化中间类
1 |
|
补充
由于涉及到不同语言交互,为了参数能够兼容,参数都定义为const char* const 类型
C++中string 转 cstring
1 | c_str() |
C++中unsigned char转 cstring
1 | 方法一:stringstream stream; |
OC中char*转NSString
1 | [NSString stringWithUTF8String:parameter] |