嘗試將純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