रद्द किए गए प्रदर्शन को रद्द करना: बाद में कॉल करना


115

क्या किसी को पता है कि इवेंट स्टैक या टाइमर स्टैक (या जो भी तंत्र यह एपीआई द्वारा उपयोग किया जाता है जो भी है) से पहले से ही कतारबद्ध चयनकर्ता घटनाओं को रद्द करना संभव है performSelector:withObject:afterDelay?

मैं एक टैब टैब के भीतर एक छवि की विशेषताओं को बदलने के लिए इस इवेंट स्टैक का उपयोग कर रहा था, और कभी-कभी लूप के लिए निष्पादित एक सेकंड में 10 सेकंड के मूल्य तक की कतार हो सकती है ... शायद 5 मिलीसेकंड या ऐसा।

समस्या तब उत्पन्न होती है जब उपयोगकर्ता टैब बंद कर देता है ... जैसे कहना है कि मेरे पास छवि परिवर्तन के लिए कतारबद्ध छवि है जो तब प्रदर्शित होती है जैसे ही टैब # 4 को सक्षम किया जाता है, और फिर उपयोगकर्ता जल्दी से टैब # 3 पर स्विच करता है और फिर टैब पर दाईं ओर वापस आ जाता है # 4 ... इसके बाद एक और 10 सेकंड के फेरबदल के लायक फिर से कतार में खड़ा कर दिया जाएगा, जबकि पुरानी कतार अभी भी खेल रही थी, संभवत: 2 या 3 सेकंड के आसपास कतार में अगर जल्दी से स्विच किया जाए ... लेकिन यहां तक ​​कि 5 सेकंड में पहुंचने के लिए एक समस्या थी।

इसलिए मुझे नए स्टैक लगाने से पहले परिवर्तनों के पुराने स्टैक को रद्द करने के लिए किसी तरह की आवश्यकता थी ...

मैं इस प्रश्न को पिछले तनाव में लिख रहा हूं क्योंकि मैं पहले से ही प्लेबैक फ़ंक्शन पर हॉक-आई इवेंट फ़िल्टर जोड़कर इस समस्या का एक वैकल्पिक समाधान के साथ आया था। हालाँकि मैं अभी भी उत्सुक हूँ कि क्या घटना रद्द करना संभव है, क्योंकि मुझे लगता है कि भविष्य में ऐसा ज्ञान काम आएगा। किसी भी सहायता के लिए धन्यवाद :)


आप प्लेबैक फ़ंक्शन पर हॉक-आई इवेंट फ़िल्टर का उपयोग कैसे कर सकते हैं?
मनिगांडा सरवनन

जवाबों:


241
[NSObject cancelPreviousPerformRequestsWithTarget:]

या

[NSObject cancelPreviousPerformRequestsWithTarget:selector:object:]

targetमूल वस्तु जिस पर है performSelector:afterDelay:बुलाया गया था।

उदाहरण के लिए:

// schedule the selector
[self performSelector:@selector(mySel:) withObject:nil afterDelay:5.0];
// cancel the above call (and any others on self)
[NSObject cancelPreviousPerformRequestsWithTarget:self];

ऐप्पल डॉक्स देखें , यह performSelector:withObject:afterDelay:विवरण के अंत में सही है ।


33
इसके उपयोग पर कुछ स्पष्टीकरण के लिए, इसे आज़माएँ: [NSObject CancelPrepretPerformRequestsWithTarget: self];
dnstevenson

[NSObject CancelPrepretPerformRequestsWithTarget: self selector: @selector (mySel :) ऑब्जेक्ट: nil];
webtrick101


2

यदि आप "PerformSelector" की तलाश में हैं तो इसका मिलान " cancelPreviousPerformSelector" ... यह नहीं है। (ऊ, Apple, आप मेरे साथ ऐसा क्यों करते हैं ???)

एर, आह, "मिलान" विधियाँ हैं:

performSelector

cancelPreviousPerformRequestsWithTarget

(डॉक्स को खोजे बिना, इसे याद रखना अतिरिक्त कठिन बनाना है।)


1

NSRunLoop डॉक्स की जाँच करें। तुम्हें चाहिए-cancelPerformSelectorsWithTarget:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.