私はObjectiveC++プロジェクトを持っています。 ObjectiveCコンテキストではARCとiPhoneSDK 6を使用しています.C++ではC++ 11コンパイラを使用しています。ARC ObjectiveC++でC++ 11ラムダ関数を使用する方法 - 正しく行うには?
C++ 11でのLambda関数は、参照で変数を取り込みます。この概念はObjectiveCでは実際にはサポートされておらず、「試行錯誤」で私は以下の解決策を考え出しました。私が気づいていない落とし穴がありますか?
この問題の解決策がありますか?
typedef std::function<void()> MyLambdaType;
...
// m_myView will not go away. ARC managed.
UIView * __strong m_myView;
...
// In Objective C context I create a lambda function that calls my Objective C object
UIView &myViewReference = *m_myView;
MyLambdaType myLambda = [&myViewReference]() {
UIView *myViewBlockScope = &myViewReference;
// Do something with `myViewBlockScope`
}
..
// In C++11 context I call this lambda function
myLambda();
なぜブロックを使用しないのですか? – kennytm
AFAIKブロックはObjectiveCのみ、または?どのようにブロックをC++に渡すのですか? –
'MyLambdaType myLambda = [m_myView](){// m_myViewで何かする}'は動作しませんか? – newacct