2011-07-13 8 views
5

सबसे यात्रा ब्लॉक के लिए, हस्ताक्षर तरह परिभाषित कर रहे हैं:क्यों पुनरावृत्ति के लिए अधिकांश ब्लॉक उपयोग तर्क वापसी मूल्य के बजाय ध्वज जारी रखें?

void(^)(id obj, BOOL* stop) 

यह ध्वज को रोकने के लिए वापसी मान का उपयोग कर बेहतर लग रहा है।

BOOL(^)(id obj) 

हालांकि मेरा मानना ​​है कि इस बात की प्रबल कारण उन्हें और अधिक कम और सुविधाजनक प्रपत्र के स्थान पर वर्तमान फार्म का उपयोग करने का फैसला करने के लिए बनाया है। वे स्टॉप फ्लैग के लिए तर्क का उपयोग क्यों करते हैं?

उत्तर

4

ज़रूर, यह ठीक काम करेगा किसी भी तरह, लेकिन इसके बारे में लगता है कि इस तरह से: यदि आप अपने for या while पाश के अंत में continue कथन का उपयोग करना है? नहीं, ज़ाहिर नहीं है क्योंकि यह स्वचालित रूप से होता है। यदि आप हालांकि लूपिंग रोकना चाहते हैं, तो आप केवल break का उपयोग कर सकते हैं।

इसी तरह ब्लॉक-आधारित गणना विधियों के साथ। यह निर्दिष्ट करने के लिए कि क्या आप गणना जारी रखना चाहते हैं या नहीं, इसलिए आपको YES वापस करने की आवश्यकता नहीं है क्योंकि यह स्वचालित रूप से होगा। हालांकि, अगर आप गणना करना बंद करना चाहते हैं, तो आप बस *stop से YES पर सेट कर सकते हैं।

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