Ho un progetto ObjectiveC++. Nel contesto ObjectiveC sto usando ARC e iPhoneSDK 6. In C++ sto usando un compilatore C++ 11.Uso delle funzioni lambda C++ 11 in ARC ObjectiveC++ - come farlo correttamente?
Le funzioni Lambda in C++ 11 stanno acquisendo variabili con riferimenti. Questo concetto non è realmente supportato da ObjectiveC e da "try and error" mi è venuta in mente la seguente soluzione. Ci sono delle insidie di cui non sono a conoscenza?
C'è una soluzione migliore a questo problema?
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();
Perché non utilizzare un blocco? – kennytm
I blocchi AFAIK sono solo ObjectiveC o? Come posso passare un blocco a C++? –
Does 'MyLambdaType myLambda = [m_myView]() {// Fai qualcosa con m_myView}' non funziona? – newacct