Bir ObjectiveC++ projem var. ObjectiveC bağlamında ARC ve iPhoneSDK 6 kullanıyorum. C++ bir C++ 11 derleyici kullanıyorum.ARC ObjectiveC++ uygulamasında C++ 11 lambda işlevlerini kullanma - nasıl düzgün yapılır?
C++ 11'deki lambda işlevleri, değişkenlerle değişkenleri yakalar. Bu konsept gerçekten ObjectiveC tarafından desteklenmiyor ve "try and error" ile aşağıdaki çözümden geldim. Farkında değilim herhangi bir tuzak var mı?
Bu sorun için daha iyi bir çözüm var mı?
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();
Neden bir blok kullanmıyorsunuz? – kennytm
AFAIK blokları yalnızca ObjectiveC'dir, veya? Bir bloğu C++'ya nasıl geçirebilirim? –
Does MyLambdaType myLambda = [m_myView]() {// m_myView ile bir şey yap}} çalışmıyor? – newacct