यह मेरा भी जवाब है। इसलिए मैं हमारे उपयोग के मामले के बारे में बात करूंगा।
हमारे पास सेवाओं की परत और UI परत (अन्य परतों के बीच) है। सेवाओं की परत पृष्ठभूमि में कार्यों को चलाती है। (डेटा हेरफेर कार्य, CoreData कार्य, नेटवर्क कॉल आदि)। UI लेयर की जरूरतों को पूरा करने के लिए सर्विस लेयर में एक दो ऑपरेशन कतारें होती हैं।
यूआई परत अपने काम को करने के लिए सेवाओं की परत पर निर्भर करती है और फिर एक सफलता पूर्ण ब्लॉक चलाती है। इस ब्लॉक में UIKit कोड हो सकता है। एक सरल उपयोग मामला सर्वर से सभी संदेश प्राप्त करने और संग्रह दृश्य को फिर से लोड करने के लिए है।
यहां हम गारंटी देते हैं कि जिन ब्लॉकों को सेवाओं की परत में पारित किया गया है उन्हें उस कतार पर भेज दिया जाता है जिस पर सेवा को लागू किया गया था। चूंकि dispatch_get_current_queue एक पदावनत विधि है, इसलिए हम कॉलर की वर्तमान कतार प्राप्त करने के लिए NSOperationQueue.currentQueue का उपयोग करते हैं। इस संपत्ति पर महत्वपूर्ण ध्यान दें।
किसी रनिंग ऑपरेशन के संदर्भ में बाहर से इस विधि को कॉल करने पर आमतौर पर शून्य वापस आ जाता है।
चूँकि हम हमेशा एक ज्ञात कतार (हमारी कस्टम कतार और मुख्य कतार) पर अपनी सेवाओं का आह्वान करते हैं, यह हमारे लिए अच्छा काम करता है। हमारे पास ऐसे मामले हैं जहां सर्विसए सर्विसबी को कॉल कर सकती है जिसे सर्विससी कह सकते हैं। चूंकि हम नियंत्रित करते हैं कि पहली सेवा कॉल कहां से की जा रही है, हम जानते हैं कि बाकी सेवाएँ समान नियमों का पालन करेंगी।
तो NSOperationQueue.currentQueue हमेशा हमारी एक पंक्ति या MainQueue लौटाएगा।
dispatch_get_current_queue()
आईओएस 6 में पदावनत क्यों किया गया है? डॉक्स इसके बारे में कुछ नहीं कहते हैं