मैं enumerateObjectsUsingBlock:अपनी तेजी से गणना की जरूरत के लिए हाल ही में एक बहुत का उपयोग कर रहा हूँ, और मैं एक कठिन समय BOOL *stopमें गणना ब्लॉक के उपयोग को समझ रहा हूँ ।
NSArrayवर्ग संदर्भ राज्यों
stop: एक बूलियन मान का संदर्भ। ब्लॉकYESसरणी की आगे की प्रक्रिया को रोकने के लिए मान सेट कर सकता है ।stopतर्क से बाहर ही तर्क है। आपको कभी भी इस बूलियन कोYESब्लॉक के भीतर सेट करना चाहिए ।
तो फिर निश्चित रूप से मैं गणना को रोकने के लिए अपने ब्लॉक में निम्नलिखित जोड़ सकता हूं:
if (idx == [myArray indexOfObject:[myArray lastObject]]) {
*stop = YES;
}
जो मैं बताने में सक्षम हूं, उससे स्पष्ट रूप *stopसे YESकोई नकारात्मक प्रभाव नहीं पड़ता है। एन्यूमरेशन अपने आप को एरे के अंत में अपने आप बंद हो जाता है। तो क्या *stopवास्तव में एक ब्लॉक में उपयोग करना आवश्यक है?
stopझंडा सलाहकार है; गणना समवर्ती मामले में पुनरावृत्तियों की कुछ अपरिभाषित संख्या के लिए जारी रह सकती है, उदाहरण के लिए। यानी आप__blockएन्यूमरेशन के माध्यम से प्रत्येक पास पर बिना शर्त के एक चर सेट नहीं कर सकते हैं और यह उम्मीद करते हैं कि यहstopजल्दी समाप्त होने पर "अंतिम" मान होगा । आपको सेटिंग के साथ हमेशा "नहीं, इस ऑब्जेक्ट का उपयोग करें" करना चाहिएstop = YES;।