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

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

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

阅读 12.6k
3 个回答

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

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

-(void)loadData;

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

SEL s = NSSelectorFromString("loadData");
objc_msgSend(a, s);

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题