2013-03-09 8 views
38

सी/ओब्जे-सी में कैसे काम करता है, हम इस typedef int MYINT; जैसे टाइपिफ़ को स्पष्ट करते हैं।ब्लॉक को टाइप करने के लिए

एक ब्लॉक के लिए typedef करना - typedef void (^MyBlock) (int a);

अब, हम MyBlock उपयोग कर सकते हैं।

ऐसा नहीं होना चाहिए - typedef void (^MyBlock) (int a) MyBlock;#define के समान नहीं होना चाहिए?

वाक्यविन्यास कैसे काम करता है?

उत्तर

59

में "ब्लॉक प्रोग्रामिंग विषय" Declaring a Block Reference देखें:

ब्लॉक चर ब्लॉक के लिए संदर्भ पकड़ो। आप उन्हें सिंटैक्स का उपयोग करके घोषित करते हैं, जिसका उपयोग आप फ़ंक्शन में पॉइंटर घोषित करने के लिए करते हैं, सिवाय इसके कि आप * के बजाय^का उपयोग करते हैं।

तो

typedef void (^myBlock) (int a); 

रूप

typedef void (*myFunc) (int a); 

वाणी एक समारोह सूचक एक ब्लॉक का प्रकार एक ही सिंटैक्स का उपयोग को परिभाषित करता है।

उदा। देखें फ़ंक्शन पॉइंटर्स के बारे में अधिक जानकारी के लिए Understanding typedefs for function pointers in C

17
से "ब्लाकों प्रोग्रामिंग विषय" इसके अलावा

, ब्लॉक के लिए एक प्रकार बनाने के लिए इस तरह होना चाहिए:

typedef returnType (^blockName)(argument1, argument2, ...) 
नीचे

एक बहुत ही सरल व्यावहारिक उदाहरण है:

typedef float (^MyBlockType)(float, float); 
MyBlockType AddTwoFloat = ^(float a, float b) {return a + b;}; 
MyBlockType MultiplyTwoFloat = ^(float a, float b) {return a * b;}; 
float c = AddTwoFloat(1, 2); //c = 3 
float d = MultiplyTwoFloat(1, 2); //d = 2 
+0

सरल और स्पष्ट कोड स्निपेट – Jasmeet

संबंधित मुद्दे

 संबंधित मुद्दे