经常遇到上层是OC部分下层是C++部分的结构.这样就会OC调用C++部分,C++回调OC的部分.
此示例部分1 是OC通过域名空间调用了C++接口,也避免了new对象.这部分很简单,看下loginWithUserName接口.
部分2是描述了C++回调OC部分.这里要说下为什么要使用libMananger单例.原因之一是模块化了,当然更重要的是在static void ErrorEvent函数能识别.难怪当初C与OC的回调中,我使用类时就识别不到该类,当初我是使用Notification传出去的.这里使用单例也可以的.部分2要点在于initialize中,这里创建TestEvent.查看TestEvent类就知道TestEvent与回调函数ErrorEvent实现了绑定关系.即TestEvent(ErrorEvent)构造函数把OC的static ErrorEvent接口与TestEvent关联并返回handle.然后传给C++层. C++层通过调用TestEvent中ErrorEvent方法(多态关系).从而响应到位置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) :