मेरे पास एक ObjectiveC++ प्रोजेक्ट है। ऑब्जेक्टिव संदर्भ में मैं एआरसी और आईफोनएसडीके 6 का उपयोग कर रहा हूं। सी ++ में मैं एक सी ++ 11 कंपाइलर का उपयोग कर रहा हूं।एआरसी ऑब्जेक्टिव सी ++ में सी ++ 11 लैम्ब्डा फ़ंक्शंस का उपयोग करना - इसे ठीक से कैसे करें?
सी ++ 11 में लैम्ब्डा फ़ंक्शन संदर्भों के साथ चर कैप्चर कर रहे हैं। यह अवधारणा वास्तव में 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 ब्लॉक केवल उद्देश्य सी हैं, या? मैं सी ++ में ब्लॉक कैसे पास करूं? –
क्या 'MyLambdaType myLambda = [m_myView]() {// m_myView के साथ कुछ करें}' काम नहीं करता है? – newacct