2014-04-23 11 views
8

हमारे ऐप में बहुत सारे वेब दृश्य हैं और मैंने हाल ही में उनसे कुछ अनुरोधों को इंटरसेप्टर करने के लिए एक NSURLProtocol जोड़ा।NSURLProtocol canInitWithRequest: कई बार

मैंने देखा है कि कुछ वेब दृश्य + [NSURLPRotocol canInitWithRequest:] विधि को कई बार कॉल कर रहे हैं, जो वास्तव में वही अनुरोध प्रतीत होता है। कभी-कभी 6 या 7 बार। मैं यह पता लगाने की कोशिश कर रहा हूं कि यह क्यों हो रहा है।

क्या किसी के पास इसका कोई अनुभव है? मैंने [NSURL पूर्ण स्ट्रिंग] और httpMethod मानों को लॉग आउट कर दिया है और वे प्रत्येक अनुरोध के लिए समान हैं। मैं उम्मीद करता हूं कि इस विधि को सर्वर से आवश्यक किसी भी फ़ाइल या संसाधन के लिए केवल एक बार बुलाया जाएगा, कई बार नहीं। और यह प्रति वेब पेज में भिन्नता प्रतीत होता है।

कोई विचार?

उत्तर

4

मैं विशेषज्ञ नहीं हूं, लेकिन AFAIK यह सामान्य व्यवहार है। [NSURLPRotocol canInitWithRequest:] उसी अनुरोध के लिए कई बार कहा जा सकता है। यदि आप प्रति अनुरोध केवल एक बार अधिसूचित होना चाहते हैं, तो आपको इसे -स्टार्ट लोडिंग विधि में पकड़ना चाहिए। किसी कारण startLoading केवल मुद्दा drekka द्वारा वर्णित के बाद कहा जाता है के लिए http://www.raywenderlich.com/59982/nsurlprotocol-tutorial

+0

: मैं इस ट्यूटोरियल सरल NSURLProtocol उपवर्ग जो सिर्फ इतना है कि क्या करेंगे के निर्माण के लिए उपयोगी पाया। भले ही मैं YES स्टार्टलोडिंग वापस लौटाता हूं, सभी अनुरोधों के बाद कॉल किया जा सकता है CanInitWithRequest पर कॉल करें। क्या आपको कोई विचार है क्यों? धन्यवाद! – ElizaS

+0

एकमात्र टिप जो मैं दे सकता हूं वह यह है: सुनिश्चित करें कि आप एक कनेक्शन शुरू नहीं कर रहे हैं जो पहले ही शुरू हो चुका है-खासकर यदि आप NSURLConnection का उपयोग कर रहे हैं, जहां कुछ आवंटन विधियां स्वचालित रूप से कनेक्शन शुरू करती हैं। – dgatwood

संबंधित मुद्दे