iOS 如何在C里调用OC对象的方法?求解,用得Xcode6.1
天蓬老师
天蓬老师 2017-04-17 14:35:41
[iOS讨论组]

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



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

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
PHPz

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

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

-(void)loadData;

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

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

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

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

迷茫

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号