2

我的 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;
    }
}
4

1 回答 1

2

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

  • 你为什么定义一个 lambda 只是为了立即调用它?
  • C++bool应该是true/ false,而不是YES/NO
  • 确保运行它的线程有一个自动释放池
于 2012-12-12T20:53:54.963 回答