ObjectiveC++ 프로젝트가 있습니다. ObjectiveC 컨텍스트에서 ARC 및 iPhoneSDK 6을 사용하고 있습니다. C++에서는 C++ 11 컴파일러를 사용하고 있습니다.ARC에서 C++ 11 람다 함수 사용 ObjectiveC++ - 제대로 수행하는 방법?
C++ 11의 람다 함수는 참조가있는 변수를 캡처합니다. 이 개념은 ObjectiveC에서 실제로 지원되지 않으며 "try and error"로 다음 솔루션을 찾았습니다. 내가 모르는 함정이 있습니까?
이 문제에 대한 해결책이 더 있습니까?
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