मुझे ब्लॉक से नफरत है। वे कोड को संक्षिप्त बनाने के लिए हैं, लेकिन मुझे कुछ और बदसूरत नहीं मिला। उदाहरण के लिए, AFNetworking साथ:क्या ब्लॉक के रूप में विधियों को पारित करने का कोई तरीका है?
AFJSONRequestOperation* operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
requestsuccess:^(NSURLRequest *request, NSURLResponse *response, id JSON) {
// Some
// very
// long
// (and as ugly as blocks)
// processing
}
failure:^(NSURLRequest *request, NSURLResponse *response, NSError *error, id JSON)) {
// Failure code
}]
कुछ इस तरह काफी बेहतर हो गया होता:
AFJSONRequestOperation* operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
requestsuccess:@selector(requestSuccess:response:json:)
failure:@selector(requestSuccess:response:error:)]
इसलिए, यह ब्लॉक के रूप विधि के चयनकर्ताओं का उपयोग करने के लिए संभव है? यदि नहीं, तो मैं ब्लॉक कोड को बेहतर कैसे बना सकता हूं?
यह मुझे परेशान करता है, क्योंकि ये ब्लॉक उद्देश्य-सी प्रोग्रामिंग का भविष्य प्रतीत होते हैं और वे केवल पठनीय नहीं हैं।
पहले ब्लॉक 'बदसूरत' लग सकते हैं लेकिन वे शक्तिशाली हैं और विशिष्ट कारण हैं कि वे 'भविष्य होने लगते हैं'। मैं आपको अच्छी जानकारी रखने के लिए इस आलेख की अनुशंसा करता हूं: http://ios-blog.co.uk/articles/tutorials/programming-with-blocks-an-overview/ – Alladinian
ब्लॉक कोड को अधिक संक्षिप्त नहीं बनाते हैं, वे करते हैं कोड अधिक शक्तिशाली। – dreamlax
यह एक वैध सवाल है, मुझे लगता है। चूंकि ब्लॉक दोनों पैरामीटर (0..एन) प्राप्त कर सकते हैं और पैरामीटर या शून्य को वापस कर सकते हैं, विधियों को ब्लॉक के रूप में उपयोग करने में सक्षम होना चाहिए ... या इसे किसी अन्य तरीके से रखने के लिए, कक्षा स्तर पर ब्लॉक को परिभाषित करना अच्छा होगा। मुझे नहीं लगता कि आप कर सकते हैं ... –