c++ - 在 C++11 上下文中调用 ObjC 函数

标签 c++ objective-c c++11 cross-platform automatic-ref-counting

我的 Objective C ARC 项目中有一个 C++ 类。该类派生自纯 C++ 类,并为我的 iOS 项目添加了特定于平台的实现。我想在那里调用 Objective C 函数和框架。

我使用 C++11 lambda 函数实现了平台特定部分。我可以这样做吗?有什么隐藏的陷阱(特别是因为我的 iOS 项目使用 ARC)?

bool MyDerivedCPPClass::getValue(const std::string& stdKey, std::string& stdValue) const
{
    NSString *key = [NSString stringWithUTF8String:stdKey.c_str()];

    // Do ObjC stuff

    if(value)
    {
        stdValue = std::string([value cStringUsingEncoding:NSUTF8StringEncoding]);
        return YES;
    }
    else
    {
        return NO;
    }
}

最佳答案

它看起来不错(通常 Objective-C 不会干扰 C++),除了:

  • 为什么要定义 lambda 只是为了立即调用它?
  • C++ bool 应该是 true/false,而不是 YES/NO
  • 确保其运行的线程具有自动释放池

关于c++ - 在 C++11 上下文中调用 ObjC 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836980/

相关文章:

c++ 和类型 size_type

c++ - Qt 小部件全屏边距

objective-c - 如何在 macOS 游戏模板中挂接 NSWindowDelegate

php - 在 iOS 中检索 SQL 数据

ios - 导航栏在 iPhone 4 (iOS 7.1.2) 中消失

c++ - 是否存在具有表达式 'C++11' 的有效 C++11 程序?

c++ - 如何使用变量作为文件名?

c++ - 如何重复打印相同的值?

c++ - 删除映射c++中其他键值中已经存在的那些值

c++ - 如何正确使用 vector 范围构造函数?