我的 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/