2011-02-15 7 views
6

मैं व्यक्तिगत रूप से विलंबित चयनकर्ताओं को रद्द करने में सक्षम होना चाहता हूं। मैं उसे [NSObject cancelPreviousPerformRequestsWithTarget...] के साथ कर सकता हूं लेकिन ऐसा करने के लिए सभी विधि पैरामीटर की आवश्यकता है। उस बिंदु पर जहां मैं रद्द करना चाहता हूं, मेरे पास नहीं है।क्या मुझे प्रदर्शन चयनकर्ताओं के साथ देरी चयनकर्ताओं की एक सूची मिल सकती है: withObject: afterDelay :?

क्या चयनकर्ताओं की सूची प्राप्त करने का कोई तरीका है जो चयनकर्ताओं में देरी के लिए उपयोग किए गए पैरामीटर के साथ देरी हो रही है?

कामकाज केवल पैरामीटर का ट्रैक रखना है। या जीसीडी का उपयोग करने के लिए और मेरे चयनकर्ता (अब ब्लॉक) को यह देखने के लिए जांचें कि उन्हें तुरंत वापस जाना चाहिए या नहीं।

उत्तर

0

सीधे नहीं। इसे पूरा करने का एक आसान तरीका एनएसओपरेशन का उपयोग करेगा - फिर भविष्य में रद्द करने के लिए आवश्यक संचालन के संदर्भ रखें।

+0

ध्यान देने के लिए भूल गए: कोड इंटरफेस का हिस्सा चला रहा है, इसलिए मुझे इसे मुख्य धागे पर रखना है। यही कारण है कि मैंने मिश्रण में NSOperation फेंक नहीं दिया। –

+0

hmmm ... ऐसा लगता है कि आपको ओपी में उल्लिखित विकल्पों के अलावा यह = \ को पूरा करने के लिए कुछ लिखना होगा, आप मुख्य रन लूप के साथ पंजीकरण कर सकते हैं (आपको सीएफ एपीआई में जाना पड़ सकता है) और उसके बाद संदेश कतार के लिए NSInvocations का उपयोग करें। वैकल्पिक रूप से आप समूह आमंत्रणों के लिए एक रैपर प्रकार बनाने में सक्षम हो सकते हैं, फिर अज्ञात पैरामीटर के बिना 'cancelPreviousPerformRequestsWithTarget' का उपयोग करें। आखिरकार, ये संदेश एक कस्टम प्रकार के माध्यम से आक्रमण कर सकते हैं जो 'isEqual:' लागू करता है। तो आप किस संदेश को रद्द करना है यह पहचानने के लिए isEqual के एक अनुकूलित कार्यान्वयन का उपयोग कर सकते हैं। – justin

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