2011-11-14 12 views
10

के साथ विलंब के साथ प्रदर्शन चयनकर्ता मैं निर्धारित टाइमर विथटाइम इंटरवल के साथ फ़ंक्शन कॉल कर रहा हूं। मैं सिर्फ यह जांच रहा हूं कि एक्सएमएल पार्सिंग पूर्ण वेब सेवाओं के लिए पूर्ण हो गई है या नहीं, सफल प्रतिक्रिया प्राप्त करने के बाद डीडएंडमेंट विधि में टाइमर को अमान्य कर दिया गया है।नियत टाइमर विथटाइम इंटरवल बनाम आईओएस 5.0

timerForStopWebService = [NSTimer scheduledTimerWithTimeInterval:30.0 target:self selector:@selector(stopWS) userInfo:nil repeats:NO]; 

अब मैं आईओएस 5.0 और अन्य iOS संस्करण में अपने काम कर जुर्माने के साथ समस्या का सामना कर रहा हूँ। आईओएस 5.0 में, एक फ़ंक्शन स्टॉपडब्ल्यूएस किसी भी समय कॉल करता है भले ही मैं इसे अमान्य कर रहा हूं। अगर आपको इसके लिए समाधान है तो मुझे बताएं।

और अब मैं stopWS में और देरी से performselector बूलियन चर सेट को लागू करने कर रहा हूँ की पहचान के लिए कि पार्स पूरा हो या नहीं। मैं सिर्फ यह जानना चाहता हूं कि इसमें कोई बड़ा अंतर है? और क्या यह समाधान मेरी समस्या के लिए काम करता है?

यदि अन्य तरीका मौजूद है, तो कृपया मुझे सुझाव दें, धन्यवाद।

+1

मुझे समझ में नहीं आता कि आप क्या देख रहे हैं। क्या आप हमेशा विधि को बुला सकते हैं? या आप इसे अमान्य करने में सक्षम होना चाहते हैं तो इसे नहीं कहा जाता है? यह स्पष्ट नहीं है। – Oliver

+0

मैं गहराई से देरी के साथ निर्धारित टाइमर विथटाइम इंटरवल बनाम प्रदर्शन चयनकर्ता के बीच अंतर जानना चाहता हूं क्योंकि मुझे आईओएस 5.0 के साथ समस्या का सामना करना पड़ रहा है। –

+0

और यह समस्या क्या है? आप इसके बारे में अपने प्रश्न में बात करते हैं लेकिन यह स्पष्ट नहीं है। – Oliver

उत्तर

21

यहाँ अपने मतभेद

performSelectorWithObjectAfterDelay

  • नाम से पता चलता सेकंड की एक निर्धारित संख्या के बाद एक चयनकर्ता प्रदर्शन के रूप में कर रहे हैं। ONCE

  • देखभाल कि तुम यहाँ की जरूरत है कि आप उद्देश्य यह है कि चयनकर्ता पर जारी किया गया है प्रदर्शन किया जा रहा है इससे पहले कि किसी भी पिछले प्रदर्शन अनुरोधों को कैंसिल करने की जरूरत है। इसके लिए रद्द करेंरफॉर्म चयनकर्ता विधि का उपयोग करें।

scheduledTimerWithTimeInterval

  • इस प्रक्रिया में किसी खास अवधि तक के बाद एक चयनकर्ता भी फोन करने की क्षमता देता है, लेकिन यह भी एक पैरामीटर है [दोहराता:] की सुविधा देता है कि आप एक ही चयनकर्ता बार बार फोन

  • तुम भी आमंत्रण में पारित कर सकते हैं चयनकर्ता, जो जब अपने चयनकर्ता तर्क का एक बहुत जरूरत विशेष रूप से सहायक होते हैं कॉल करने के लिए।

  • आप टाइमर रद्द करने के लिए जब इसकी अब जरूरत की जरूरत है। यह चाल

    [myTimer अमान्य] करना चाहिए; myTimer = शून्य;

यह भी एनएसटीमर पर सबसे निश्चित धागा है, कृपया इसे देखें। How do I use NSTimer?

0

यदि आप अब आवश्यकता नहीं है तो इसे performSelectorWithObjectAfterDelay और फिर cancelPerformSelector का उपयोग कर सकते हैं। मुझे लगता है कि scheduledTimerWithTimeInterval से यह आसान है क्योंकि आपको टाइमर के संदर्भ को स्टोर करने की आवश्यकता नहीं है। अधिकांश भाग के लिए इन दो दृष्टिकोणों को वही व्यवहार करना चाहिए।

+0

आपको टाइमर संदर्भ स्टोर करने की आवश्यकता नहीं है। एक बार जब यह लूप में जोड़ा जाता है तो आपको केवल संदर्भ की आवश्यकता होती है यदि आप इसे रद्द करना चाहते हैं ... रद्द करेंरफॉर्म चयनकर्ता के समान। अन्यथा, आप एक फायरिंग के साथ टाइमर बना सकते हैं। – David

+0

मुख्य अंतर यह है कि जब आप इसे रद्द करना चाहते हैं, जिसे पूछताछ करने की आवश्यकता होती है। रद्द करेंरफॉर्म चयनकर्ता में आपको केवल उस वस्तु के संदर्भ की आवश्यकता होती है, जिसे आप आमतौर पर किसी भी तरह तक पहुंच सकते हैं (शायद यह केवल स्वयं है)। टाइमर को रद्द करने के लिए, आपने टाइमर को कहीं भी संग्रहीत किया होगा, शायद एक आवृत्ति चर के रूप में। – zeroimpl

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