iOS 如何在C里调用OC对象的方法?求解,用得Xcode6.1

发布于 2022-09-01 07:00:21 字数 944 浏览 9 评论 0

RT,最近在弄蓝牙的东西,关于OBD的,要连接下位机读取汽车信息的,首先是我写了一个OC对象,里面包含了蓝牙收发方法,然后下位机要调用我写的这个对象里面的方法,下位机的程序是C的,这样的话就是要用C调用OC了,我尝试了一下,没有成功,只能上这里求助了
表达能力比较差,还是上图把
图片描述
图片描述
图片描述
图片描述

我把这个上传到网盘了,http://pan.baidu.com/s/1jGFyCF8,闲着的大神们帮忙看看吧
经过大家的帮忙,我写成了这个样子,大家再帮忙看看有什么问题吧,或者说有更好的方法求DEMO
图片描述
图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暖树树初阳… 2022-09-08 07:00:21

相信我,这不是你想要的功能,其实你应该把Objective-C代码包装成C函数然后在C代码中调用。

不过你要是真想试试,可以这么干:
比如说你有一个Objective-C class,里面有一个方法

-(void)loadData;

假如说你的class实例叫a,那么你可以:

SEL s = NSSelectorFromString("loadData");
objc_msgSend(a, s);
絕版丫頭 2022-09-08 07:00:21

个人感觉,不是不应该在c里面提供一些个callback,oc通过注册这些callback来实现呢
没有写过,纯意淫

找到一个c++调用oc的,希望对你有用
http://www.cnblogs.com/biosli/archive/2011/04/30/mixing_objectivec_and...

不一样的天空 2022-09-08 07:00:21

正如 @Windoze 说的一样,你应该把Objective-C包装成C函数,做一个中间层再供外层调用。这样更健壮,耦合性也更低。

至于如何包装,你只需要按C的语法写好所有函数(这些函数中直接使用中括号语法调用OC方法),然后将这个文件名由*.c改为*.m就行了。

然后你其他的C模块中就可以直接调用前面的*.m文件中的C接口了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文