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

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

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



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


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

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


相信我,这不是你想要的功能,其实你应该把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接口了。

【热门文章】
【热门文章】