ObjectiveC++プロジェクトがあります。ObjectiveCのコンテキストでは、ARCとiPhoneSDK6を使用しています。C++では、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();