आप टाइमर को रद्द करने में सक्षम होना चाहते हैं, तो आप का उल्लेख करने के लिए है टाइमर आप रद्द कर रहे हैं, और इसका मतलब है कि आपको पॉइंटर को टाइमर पर रखना होगा, जस्टिन का जवाब देखें।
टाइमर का संदर्भ रखना इसे करने का सही तरीका है, लेकिन पूर्णता के लिए आप -performSelector:withObject:afterDelay:
विधि को गरीब व्यक्ति के टाइमर के रूप में भी उपयोग कर सकते हैं। उस कॉल को +cancelPreviousPerformRequestsWithTarget:
का उपयोग करके अमान्य किया जा सकता है। नमूना कोड:
- (void) viewDidLoad
{
[super viewDidLoad];
[self performSelector:@selector(timerTick) withObject:nil afterDelay:10];
}
और फिर:
- (void) viewWillDisappear
{
[NSObject cancelPreviousPerformRequestsWithTarget:self];
[super viewWillDisappear];
}
लेकिन यह यह करने के लिए सही तरीके से, क्योंकि वहाँ अन्य प्रदर्शन-चयनकर्ता अपने उद्देश्य यह है कि आप रद्द करना चाहते पर लंबित अनुरोध हो सकता है नहीं है। अपने टाइमर को चारों ओर रखना सबसे अच्छा है, इस तरह आप जानते हैं कि आप वास्तव में क्या रद्द कर रहे हैं।
वैसे भी, -viewDidLoad
में टाइमर चलाने के लिए शायद यह एक बुरा विचार भी है। लोड होने पर देखने के किसी भी संबंध के बिना लोडिंग कभी भी हो सकती है।
* मेरा मतलब क्या है * मैं एनएसटीमर ऑब्जेक्ट * बनाना नहीं चाहता हूं? आप पहले से ही 'ScheduleTimerWithTimeInterval' का उपयोग करके एक बनाते हैं। – sch
मेरा मतलब है कि मैं अपने द्वारा बनाए गए टाइमर पर नहीं रोकता हूं। क्या यह संभव है? – Voloda2