簡體   English   中英

C ++和Objective C之間的事件處理

[英]Event handling between C++ and Objective C

我最近開始研究iOS游戲,並決定用C ++編寫項目的一個獨特部分。 只要Objective C類只是訪問某些成員或調用C ++對象上的函數,這種方法似乎工作正常。 但是我似乎找不到一種優雅的方法來讓我的Objective C類響應C ++類中的'events'。 任何使用回調的事件處理系統似乎都是不可能的(因為Objective C方法和C ++函數可能不可互換)。 我能想到的是使用委托模式和圍繞我的C ++委托類編寫包裝類,以便我可以在Objective C代碼中使用它們。 所以我的問題是:有更好的方法嗎?

注意:我想在我的C ++文件中直接使用Objective C,因為這些類應該是獨立於平台的。

您可能需要考慮CoreVideo使用的機制。

在他們的模型中,他們有一個涉及注冊C回調函數的機制( http://tinyurl.com/axtxajf ),該函數的一個參數是void *,可以對Objective-C類進行類型轉換你需要訪問。

下面是您可以在C ++模塊中實現的C函數示例,用於注冊回調函數。 該參數是回調函數和指向類實例的指針:

SetEventCallback(EventCallbackFunction, self);

當需要處理事件時,調用回調函數,並且可以對void *進行類型轉換以調用Obj-C類並調用方法:

void EventCallbackFunction(void* objCPtr)
{
    [(MyObjCClass*)objCPtr someMethod];
}

您可以使用C ++ 0x lambda函數,它們可以與Objective-C塊互換(可相互分配)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM