2012-11-14 19 views
5

का अनुरोध करते समय कतार में ऑपरेशन जोड़ें, मैं निष्पादन अनुरोध में ऑपरेशन जोड़ना चाहता हूं। मैंने ASINetworkQueue के बारे में पढ़ा है, लेकिन यह सभी ऑपरेशन जोड़ता है और इसे चलाता है। लेकिन मैं चल रहे कतार में ऑपरेशन जोड़ना चाहता हूं।ASIHTTPRequest या AFNetworking

क्या यह संभव है? ASIHTTPRequest या AFNetworking का उपयोग करके मुझे कोई फर्क नहीं पड़ता, जब तक मुझे वह करना मिलता है जो मैं करना चाहता हूं।

EDIT

यह एक और अनुरोध जोड़ने का प्रयास करते समय त्रुटि से नीचे दिखाता है।

[ASINetworkQueue addOperation:]: आपरेशन निष्पादित हो रहा है और कतारबद्ध नहीं किया जा सकता '

+0

यहां समस्या क्या है? आपका अनुरोध वर्तमान में निष्पादित है या कतार पहले ही कुछ परिचालनों को निष्पादित कर रही है? यदि ऑपरेशन पहले से ही किसी अन्य कतार में निष्पादित हो रहा है, तो आप कतार में कोई ऑपरेशन नहीं जोड़ सकते हैं। क्या यह वही है जिसको आप ढूंढ रहें थे। – iDev

+0

हां, मेरी कतार अभी भी निष्पादित है, लेकिन मैं ऑपरेशन में एक और कतार जोड़ना चाहता हूं। क्या यह संभव है? 'AFNetworking' में कैसे झगड़ा? – HelmiB

+0

मुझे भ्रमित हो रहा है। आपका ऑपरेशन निष्पादित हो रहा है और आप किसी अन्य कतार में जोड़ना चाहते हैं? एक कतार कुछ अन्य ऑपरेशन निष्पादित कर सकती है और आप उस समय कोई भी ऑपरेशन जोड़ सकते हैं। – iDev

उत्तर

11

apple documentation से addOperation: के लिए यह स्पष्ट है कि आप एक ऑपरेशन नहीं जोड़ सकते जो NSOperationQueue में निष्पादित हो रहा है।

यह वहाँ क्या उल्लेख किया है,

कोई कार्रवाई वस्तु एक समय में अधिकतम एक आपरेशन कतार में में हो सकता है और इस प्रक्रिया में एक NSInvalidArgumentException अपवाद फेंकता है तो ऑपरेशन एक और कतार में पहले से ही है। इसी प्रकार, यदि यह ऑपरेशन वर्तमान में निष्पादित हो रहा है या पहले ही निष्पादन समाप्त कर चुका है तो यह विधि एनएसआईएनवालिडअर्ग्यूमेंट अपवाद अपवाद फेंकता है।

यह NSOperationQueue का डिफ़ॉल्ट व्यवहार है। आपको यह सुनिश्चित करने की ज़रूरत है कि NSOperation कतार में जोड़ने से पहले निष्पादित नहीं हो रहा है। isExecuting, isFinished आदि जैसे विभिन्न गुण हैं, यह जांचने के लिए।

+0

एनक्यूड नहीं किया जा सकता है।धन्यवाद – HelmiB

+6

भले ही आपका ऑपरेशन 'एक्सटेक्सिंग' और 'isfinished' नहीं है, फिर भी त्रुटि' ऑपरेशन निष्पादित हो रही है और इसे एनक्यूड नहीं किया जा सकता है 'यदि आप दो बार एक ही कतार में एक ही ऑपरेशन को एन्क्यू करने का प्रयास करेंगे तो फेंक दिया जाएगा। आपको उसी कतार में फिर से संलग्न करने से पहले ऑपरेशन को दोबारा जोड़ना होगा। –

0

तुम सिर्फ अनुरोध कतार पर addOperation कहते हैं। asi में ASiNetworkQueue के लिए यह चल रहा है या नहीं, तो यह गड़बड़ नहीं करना चाहिए।

+0

हम्म ... मैं संसाधन पढ़ता हूं अलग कहता है। चल रहे ऑपरेशन को जोड़ नहीं सकते हैं। आपको यकीन है? मैंने कोशिश नहीं की है, कल इसे आज़माएगा। धन्यवाद। – HelmiB

+0

अच्छी तरह से, मैंने इसे आज़माया है लेकिन कोड और हेडर डॉक्स से ऐसा लगता है कि यह काम नहीं करेगा –

+0

निश्चित रूप से एनएसओपेरेशनक्यूयू (एएसआई या एएफएन) हमेशा संलग्न होता है हालांकि आप निर्भरताओं के साथ काम कर सकते हैं –