在Objective C++中使用C++?

fdh*_*fdh 5 c++ macos objective-c

C++和Objective C在Objective C++中有多少集成?我意识到Objective C++编译C++和Objective C代码,但这些语言实际上是否相互影响?

例如,我可以创建Objective C对象的模板吗?如何从C++类继承Objective C类?

我基本上要问的是语言混合还是只是在同一个文件中编译?到什么程度?

dj *_*zie 2

使用 Objective-C++ 构建应用程序是很常见的。您可以将 Objective-C 封装在 C++ 代码中,但不能共享对象。例如,您无法在 Objective-C 中创建 NSString 对象并尝试从 C++ 调用方法 hasSuffix: ,反之亦然。因此,要在这两者之间共享内容,您需要使用 C 类型,如结构、字符、整数等。这是因为 Objective-C 对象只能在 Objective-C 运行时环境中使用,而 C++ 对象只能在 C++ 运行时环境中使用。所以他们唯一可以共享和交流的就是C。

也许一个小例子将向您展示如何在这两者之间进行交互。

NSString * objcStr = [[NSString alloc] initWithString:@"Hello World!"];
std::string cppStr ([objcStr UTF8String]);
std::cout << cppStr;
Run Code Online (Sandbox Code Playgroud)