尝试将纯C/C++代码作为外部静态库集成到iPhone项目中。到目前为止这么好,但现在我卡在一个点,我需要寄存器库回调。图书馆应该在发生事情时通知我的iPhone应用程序。似乎是一个定义代表的好地方。作为iPhone委托协议的一部分的Plain C回调函数指针?
...但库期待C函数指针回调。我如何定义那些在Objective-C,我如何将这些用作委托模式的一部分?
对不起,真的不能给示例代码。这里有点类似:第一个我用来注册的接口,接下来是回调的定义。
registerCallBack(&aCBack, &bCBack, &cCBack, &dCBack, &eCBack);
typedef void (aCBack)(uint32_t magic);
typedef void (bCBack)(const NewData* newData);
typedef void (cCBack)(uint32_t value, const std::vector<DataStuff*>* stuff);
typedef void (dCBack)(uint32_t value, const SomeData* data, const std::string text, uint32_t type);
typedef void (eCBack)(uint32_t value, const MoreData* more);
......哦,顺便说一句,其中一个问题是每个Objective-C类的方法都有两个隐藏的参数。不知道如何处理这一点。除了更改该外部库的接口外。
读这么多次,每次理解多一点:)想知道如何做**“内部委托调用你的Objective-C代码“**?看单身设计模式,很多工作。还有其他方法吗? – JOM 2009-12-03 11:54:06
如果你可以调用C++类,这个类的实现可以包含Objective-C代码 - 所以你可以调用例如Objective-C类中,您的C++实例包含“id”或类似的。这实际上取决于所提及的能力以及周围的环境和特定的用例:) – 2009-12-03 16:21:16