2016-02-27 63 views
2

我有一個使用C/C++編寫的第三方庫的C++應用程序。該庫包含一個函數,該函數返回一個指向NSWindow的指針,即Cocoa Framework中的Objective-C元素。如何在C++應用程序中處理指向Objective-C對象的指針

在我的代碼的某些時候,我調用了該函數,但在繼續之前,我必須對該NSWindow執行一個非常小的操作(比如說改變一個標誌或其他東西)。換句話說,我必須在C++上下文中調用Objective-C對象的Objective-C方法。你認爲什麼是最好/正確的方式來做到這一點?

+0

你的問題缺乏細節。嘗試在你最喜歡的搜索引擎中輸入* Objective-C++ *,你會發現很多需要閱讀的東西。 – CRD

+0

你可以使用C++ 11嗎?你可以在你的項目中使用Objective-C++(這可能很容易)。 – JBL

+0

@JBL當然可以,應用程序是用C++ 11風格編寫的 – Ignorant

回答

1

您可以使用一個Objective-C++文件(.mm)中,你只需要使用一個塊像你使用lambda:

//In an .mm file 
auto changeFlag = ^(/* your params */) { 
    [yourObjCObject yourObjCMethod]; 
}; 

可以那麼回調傳遞給C++上下文的std::function並在那裏打電話。

0
  1. 你可以讓你通過改變它的擴展文件一個Objective-C++來.mm 這樣,你可以在單一文件中混用C++和OBJ-C代碼。

  2. 如果這種方法對您不正確,您可以查看發送的低級obj-c對象消息。 obj-c中的所有方法調用都轉換爲低級,如

    id data = ...;

    objc_msgSend(data,sel_getUid(「release」)); // [數據發佈];

相關問題