OC与C++的回调处理

本文介绍了一种在Objective-C(OC)中调用C++接口,并实现C++回调OC的方法。通过创建一个名为TestEvent的类,继承自MyEventObserver,并使用静态函数ErrorEvent作为回调。在libMananger的initialize方法中,创建TestEvent实例并将其传递给C++层,当C++层调用TestEvent的ErrorEvent方法时,会触发OC中的回调。同时,文章还讨论了如何扩展回调函数以处理更复杂的场景,如SingleDeviceErrorEvent和SingleDeviceInfo。
摘要由CSDN通过智能技术生成

经常遇到上层是OC部分下层是C++部分的结构.这样就会OC调用C++部分,C++回调OC的部分.

 此示例部分1 是OC通过域名空间调用了C++接口,也避免了new对象.这部分很简单,看下loginWithUserName接口.

部分2是描述了C++回调OC部分.这里要说下为什么要使用libMananger单例.原因之一是模块化了,当然更重要的是在static void ErrorEvent函数能识别.难怪当初COC的回调中,我使用类时就识别不到该类,当初我是使用Notification传出去的.这里使用单例也可以的.部分2要点在于initialize,这里创建TestEvent.查看TestEvent类就知道TestEvent与回调函数ErrorEvent实现了绑定关系.TestEvent(ErrorEvent)构造函数把OCstatic ErrorEvent接口与TestEvent关联并返回handle.然后传给C++. C++层通过调用TestEventErrorEvent方法(多态关系).从而响应到位置1地方

源码中的registerEventObserver只是注册一个事件观察者.libMananger事件抛给OC的更上层.unRegisterEventObserverForKey就是注销事件观察者

 以下是源码

//TestEvent.h

//定义Observer 

class MyEventObserver {

public:

    virtual void ErrorEvent(int ErrorCode,constchar* ErrorDesciption) =0;

};

//定义回调函数

typedef void(* ErrorEventCallBack)(int ErrorCode,constchar* ErrorDesciption);

class TestEvent : publicMyEventObserver {

    public :

    TestEvent(){}  //默认构造函数

    TestEvent(ErrorEventCallBack erroreventcb) :

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值