Вызов функций ObjC в контексте C ++ 11

У меня есть класс C ++ в моем проекте Objective C ARC. Класс является производным от чистого класса C ++ и добавляет платформо-зависимую реализацию для моего проекта iOS. Я хочу назвать функции и рамки Objective C там.

Я реализовал части платформы, используя лямбда-функции C ++ 11. Могу ли я сделать это таким образом? Есть какие-то скрытые подводные камни (особенно потому, что мой проект 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;
}
}

2

Решение

Выглядит хорошо (обычно Objective-C не мешает C ++), кроме:

  • Почему вы определяете лямбду, чтобы просто назвать ее немедленно?
  • C ++ bool должно быть true/falseне YES/NO
  • Убедитесь, что поток, на котором это выполняется, имеет пул авто-релиза
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]