दिलचस्प पोस्ट
स्मृति प्रबंधन / आकार एन एमबी के वेक्टर आवंटित नहीं कर सकता वेबव्यू और एचटीएमएल 5 <वीडियो> गतिशील रूप से LINQ ग्रुपिंग यूआईपीकर देखें और एक बटन में कार्य पत्र – कैसे? फ्लास्क लटके जब एक पोस्ट अनुरोध स्वयं भेजते हैं एंड्रॉइड 2.3 वाईफाई हॉटस्पॉट एपीआई git: // प्रोटोकॉल कंपनी द्वारा अवरुद्ध, मैं उस के आसपास कैसे मिल सकता है? विंडोज 7 पर, जावा जेवीएम "यूजरहोम" सिस्टम प्रॉपर्टी कैसे सेट करता है? Ifconfig को पाश केवल मेरे आईपी पता प्राप्त करने के लिए Bash StringBuilder क्यों स्ट्रिंग है जब? जावा स्थिर प्रारंभिक आदेश दशमलव सटीक समायोजन, .net सीमा से बाहर सरणी तक पहुंचने के लिए कितना खतरनाक है? पायथन के जरिए HTML ईमेल भेजा जा रहा है जावास्क्रिप्ट स्ट्रिंग और संख्या रूपांतरण

मेरी अपनी विधि के लिए कस्टम पूरा ब्लॉक

मैंने अभी पूरा पूरा ब्लॉकों की खोज की है:

completion:^(BOOL finished){ }]; 

मेरा अपना तरीका पूरा करने का ब्लॉक लेने के लिए मुझे क्या करने की आवश्यकता है?

Solutions Collecting From Web of "मेरी अपनी विधि के लिए कस्टम पूरा ब्लॉक"

1) अपने स्वयं के पूरा होने वाले ब्लॉक को परिभाषित करें,

 typedef void(^myCompletion)(BOOL); 

2) एक ऐसा तरीका तैयार करें जो आपके पूरा होने वाला ब्लॉक पैरामीटर के रूप में लेता है,

 -(void) myMethod:(myCompletion) compblock{ //do stuff compblock(YES); } 

3) यह आप इसे कैसे उपयोग करते हैं,

 [self myMethod:^(BOOL finished) { if(finished){ NSLog(@"success"); } }]; 

यहां छवि विवरण दर्ज करें

आप ब्लॉक को एक कस्टम प्रकार के रूप में परिभाषित करते हैं:

 typedef void (^ButtonCompletionBlock)(int buttonIndex); 

फिर इसे किसी विधि के तर्क के रूप में प्रयोग करें:

 + (SomeButtonView*)buttonViewWithTitle:(NSString *)title cancelAction:(ButtonCompletionBlock)cancelBlock completionAction:(ButtonCompletionBlock)completionBlock 

इसे कोड में बुलाते समय यह किसी भी अन्य ब्लॉक की तरह है:

 [SomeButtonView buttonViewWithTitle:@"Title" cancelAction:^(int buttonIndex) { NSLog(@"User cancelled"); } completionAction:^(int buttonIndex) { NSLog(@"User tapped index %i", buttonIndex); }]; 

यदि यह ब्लॉक को ट्रिगर करने के लिए समय आता है, तो बस completionBlock() कॉल करें completionBlock() ब्लॉक completionBlock() (जहां completionBlock करें ब्लॉक आपके स्थानीय प्रतिलिपि का नाम है)।

ब्लॉक वेरिएबल्स सिंटैक्स में समान हैं जो सी में पॉइंटर्स कार्य करते हैं।

क्योंकि सिंटैक्स बदसूरत है वे अक्सर टाइप किए गए हैं, हालांकि उन्हें सामान्य रूप से भी घोषित किया जा सकता है

 typedef void (^MyFunc)(BOOL finished); - (void)myMethod:(MyFunc)func { } 

नॉन टाइपिफ़ के लिए यह उत्तर देखें:

किसी टाइप विधि के उपयोग के बिना एक ब्लॉक विधि पैरामीटर घोषित करें