अनुसरण स्रोत का हिस्सा है। यह शेड्यूल विधि को तीन बार कॉल करता है।
मैं एक 2) शेड्यूल को अनशेड्यूल करना चाहूंगा।
एक चुनी हुई अनुसूची पद्धति को कैसे अनिर्धारित करें?
-(id) init
{
if( (self=[super init] ))
{
int_count=0;
[self schedule:@selector(displayOne) interval:1.0]; 1) schedule
[self schedule:@selector(displayOne) interval:2.0]; 2) schedule
[self schedule:@selector(displayOne) interval:1.5]; 3) schedule
}
return self;
}
3 जवाब
एक ही विधि को कॉल करने वाले एकाधिक चयनकर्ताओं को शेड्यूल करने का वास्तव में कोई मतलब नहीं है। यदि आप अपनी कंसोल विंडो में देखते हैं तो आपको यह कहते हुए एक संदेश दिखाई देगा:
CCScheduler#scheduleSelector. Selector already scheduled. Updating interval from: 1.00 to 2.00
CCScheduler#scheduleSelector. Selector already scheduled. Updating interval from: 2.00 to 1.50
आप क्या कर सकते हैं इस तरह के विभिन्न विधि नामों के साथ चयनकर्ता को शेड्यूल करें:
[self schedule:@selector(displayOne) interval:1.0]; 1) schedule
[self schedule:@selector(displayTwo) interval:2.0]; 2) schedule
[self schedule:@selector(displayThree) interval:1.5]; 3) schedule
और displayTwo
विधि में यह स्वयं को इस प्रकार अनिर्धारित करता है:
[self unschedule:@selector(displayTwo)];
मुझे लगता है कि डिस्प्लेऑन फ़ंक्शन का उपयोग करने के बजाय आपको शेड्यूलर को 3 अलग-अलग कार्यों में अलग करना होगा।
3 अलग-अलग कार्यों के साथ, आप शेड्यूल न किए गए फ़ंक्शन का उपयोग करने में सक्षम होंगे। अभी, आप या तो उन सभी का शेड्यूल रद्द कर सकते हैं, या उन सभी को चालू छोड़ सकते हैं।
[self unschedule:@selector(test1)];
अनिर्धारित वर्तमान चल रहे चयनकर्ता के लिए आप _cmd
कीवर्ड के रूप में कर सकते हैं
[self unschedule:_cmd];