2016-02-27 38 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”)); // [数据发布];

相关问题