2

ObjectiveCARCプロジェクトにC++クラスがあります。このクラスは純粋なC++クラスから派生し、iOSプロジェクトのプラットフォーム固有の実装を追加します。そこでObjectiveCの関数とフレームワークを呼び出したいと思います。

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

1 に答える 1

2

以下を除けば、見た目は問題ありません(通常、Objective-CはC ++に干渉しません)。

  • ラムダをすぐに呼び出すためだけに定義するのはなぜですか?
  • C++booltrue/falseではなくYES/である必要がありますNO
  • これが実行されるスレッドに自動解放プールがあることを確認してください
于 2012-12-12T20:53:54.963 に答える