2008-12-03 7 views
5

मैं देरी कैसे ट्रिगर करूं, मान लीजिए कि मैं अब से 3 सेकंड में एक विधि (एक बार) कॉल करना चाहता हूं, और अगर मुझे आवश्यकता है तो मैं उस कॉल को कैसे रद्द कर सकता हूं?रद्द करने की संभावना के साथ देरी कॉल?

उत्तर

7

आप -[NSObject performSelector:awithObject:afterDelay:], और +[NSObject cancelPreviousPerformRequestsWithTarget:selector:object] का भी उपयोग कर सकते हैं।

+0

+ रद्द करेंप्रतिफॉर्मफॉर्म्सविथ लक्ष्य: चयनकर्ता: ऑब्जेक्ट: एक क्लास विधि (+) है, उदाहरण विधि (-) नहीं। यही कारण है कि यह लक्ष्य (उदाहरण) को अपने तर्कों में से एक के रूप में लेता है। –

+0

ओह, आप सही हैं, पकड़ने के लिए धन्यवाद! –

+0

एनएसटीमर से इसका उपयोग करना बहुत आसान है। या क्या मैं कुछ न कुछ भूल रहा हूं? –

1
अपने शीर्षक में

..

NSTimer *timer; 

जब आप सेटअप करना चाहते हैं ..

timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(yourMethod:) userInfo:nil repeats:NO]; 

जब आप रद्द करना चाहते ..

[timer invalidate]; 
+0

टाइमर को बनाए रखने के लिए मत भूलना जब आप इसे सेट अप करते हैं और इसे अमान्य करने के बाद इसे छोड़ देते हैं। आपके लिए इसे बनाए रखने के लिए रन लूप पर निर्भर करना खराब रूप है और यदि ऐप्पल कभी भी कार्यान्वयन को बदलता है तो टूटने का जोखिम होता है। –

3

उपयोग NSTimer। तीन सेकंड के समय विधि पर कॉल सेट अप करने के लिए इसका उपयोग करें। यह केवल एक बार कहा जाएगा:

[NSTimer scheduledTimerWithTimeInterval: 3 
            target: self 
            selector: @selector(method:) 
            userInfo: nil 
            repeats: NO]; 

विधि इस तरह देखने के लिए की जरूरत है:

- (void) method: (NSTimer*) theTimer; 

आप विधि userInfo का उपयोग करते हुए मापदंडों पारित कर सकते हैं (ऊपर में शून्य करने के लिए सेट उदाहरण)। इसे विधि में [theTimer userInfo] के रूप में उपयोग किया जा सकता है।

विधि को रद्द करने के लिए एनएसटीमर पर विधि को अमान्य करें।

+0

क्या इस विधि को देखने की इच्छा है? और एनएसटीमर उदाहरण के साथ क्या करने के लिए कुछ भी आवश्यक है? –

+0

मुझे लगता है कि मैं यह कहने में सही हूं कि विधि को इस तरह दिखने की आवश्यकता है। UserInfo पैरामीटर का उपयोग अतिरिक्त डेटा में पास करने के लिए किया जाता है। यह आपकी विधि में [theTimer userInfo] के रूप में उपयोग है। –

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