डॉक्स से:आईओएस - एनएसओपरेशन क्यूयू में एनएसओपरेशन क्या है या नहीं?
कोई कार्रवाई वस्तु एक समय में ज़्यादा से ज़्यादा एक आपरेशन कतार में हो सकता है और इस प्रक्रिया में एक NSInvalidArgumentException अपवाद फेंकता है तो ऑपरेशन एक और कतार में पहले से ही है। इसी प्रकार, यदि यह ऑपरेशन वर्तमान में निष्पादित हो रहा है या पहले ही निष्पादन समाप्त कर चुका है, तो यह विधि एनएसआईएनवालिडअर्ग्यूमेंट अपवाद अपवाद फेंकता है।
तो मैं अगर मैं सुरक्षित रूप से एक कतार में एक NSOperation जोड़ सकते हैं, इसकी जांच करते हैं?
मुझे पता है कि एकमात्र तरीका ऑपरेशन जोड़ रहा है और फिर अपवाद को पकड़ने का प्रयास करें यदि ऑपरेशन पहले से ही कतार में है या पहले निष्पादित है।
लेकिन यदि मेरे पास एकाधिक ऑपरेशन कतार है तो क्या होगा? क्या मुझे इसे प्रत्येक ऑपरेशन कतार के लिए जांचना चाहिए? मैं यह कर सकता हूं लेकिन क्या यह सबसे अच्छा संभव तरीका है? –
@ xlc0212: एक और समाधान जो मैं सोच सकता हूं वह एनएसओपरेशन को उप-वर्ग करना है, जिसे वास्तव में ऐप्पल द्वारा प्रोत्साहित किया जाता है; और एक बूलियन संपत्ति "isInQueue" जोड़ें जो आपको कतार में जोड़ते समय YES पर फ़्लैग किया जाता है। इस तरह, आपको कतार में संचालन जोड़ने से पहले इस संपत्ति को जांचना होगा। – Zebs
मुझे ऑपरेशन को कब ध्वजांकित करना चाहिए? मुझे इसे कतार में जोड़ने से पहले इसे मैन्युअल रूप से सेट करना चाहिए या मुझे कुछ विधि को ओवरराइड करना चाहिए जो कतार द्वारा बुलाया जाएगा और फिर ध्वज सेट करें –