यहां मुद्दा बनाया जा रहा है वही है कि क्रिस हैन्सन ने अपने लेख "When to use NSOperation vs. GCD" में कहा गया है:
हमेशा उपयोग करें:
सीधा जवाब सभी आवेदन विकास के लिए एक सामान्य दिशानिर्देश है आपके लिए उच्चतम स्तर का अबास्ट्रक्शन उपलब्ध है, और माप आवश्यक होने पर को निम्न-स्तरीय अवशेषों तक छोड़ दें।
इस विशेष मामले में, इसका मतलब है कि कोको अनुप्रयोगों को लिखते समय, आपको आम तौर पर जीसीडी का उपयोग करके के बजाय NSOperation का उपयोग करना चाहिए। इसलिए नहीं कि दक्षता में एक फर्क है, लेकिन क्योंकि NSOperation एक उच्च स्तरीय अमूर्त GCD की तंत्र के ऊपर प्रदान करता है।
सामान्य तौर पर, मैं इस बात से सहमत।NSOperation और NSOperationQueue निर्भरताओं और एक या दो अन्य चीजों के लिए समर्थन प्रदान करते हैं जो जीसीडी ब्लॉक और कतारों के पास नहीं हैं, और वे समवर्ती परिचालनों को लागू करने के तरीके के निचले स्तर के विवरण को दूर करते हैं। यदि आपको उस कार्यक्षमता की आवश्यकता है, तो NSOperation जाने का एक बहुत अच्छा तरीका है।
हालांकि, दोनों के साथ काम करने के बाद, मैंने खुद को अपने सभी एनएसओपरेशन-आधारित कोड को जीसीडी ब्लॉक और कतारों के साथ बदल दिया है। मैंने इसे दो कारणों से किया है: अक्सर कार्यवाही के लिए एनएसओपरेशन का उपयोग करते समय महत्वपूर्ण ओवरहेड होता है, और मेरा मानना है कि मेरा कोड क्लीनर और जीसीडी ब्लॉक का उपयोग करते समय अधिक वर्णनात्मक है।
पहला कारण मेरे अनुप्रयोगों में प्रोफाइलिंग से आता है, जहां मैंने पाया कि एनएसओपरेशन ऑब्जेक्ट आवंटन और डिलोक्शन प्रक्रिया ने छोटे और लगातार कार्यों से निपटने के दौरान सीपीयू संसाधनों की एक बड़ी मात्रा ली, जैसे स्क्रीन पर ओपनजीएल ईएस फ्रेम को प्रस्तुत करना। जीसीडी ब्लॉक ने पूरी तरह से ओवरहेड को हटा दिया, जिससे महत्वपूर्ण प्रदर्शन सुधार हुआ।
दूसरा कारण अधिक व्यक्तिपरक है, लेकिन मुझे विश्वास है कि NSOperations की तुलना में ब्लॉक का उपयोग करते समय मेरा कोड क्लीनर है। ब्लॉक द्वारा अनुमत दायरे का त्वरित कब्जा और उनमें से इनलाइन प्रकृति कम कोड बनाती है, क्योंकि आपको ऑपरेशन में पारित होने के लिए कस्टम एनएसओपरेशन सबक्लास या बंडल पैरामीटर बनाने की आवश्यकता नहीं है, और मेरी राय में अधिक वर्णनात्मक कोड, क्योंकि आप उस बिंदु पर कतार में चलाने के लिए कोड डाल सकते हैं जहां इसे निकाल दिया जाता है।
फिर से, यह वरीयता का मामला है, लेकिन मैंने खुद को अन्यथा अधिक समेकित कोको अनुप्रयोगों में भी जीसीडी का उपयोग करके पाया है।
https: // कोकोकास्ट्स।कॉम/चुनने के बीच-nsoperation-and-grand-central-dispatch/ – Masih