खोज…
पैरामीटर
| पैरामीटर | विवरण |
|---|---|
interval | समय, सेकंड में, टाइमर फायरिंग के लिए प्रतीक्षा करने के लिए; या, टाइमर को दोहराने में, फायरिंग के बीच का समय। |
target | selector को कॉल करने के लिए ऑब्जेक्ट |
selector | स्विफ्ट में, एक Selector ऑब्जेक्ट target पर कॉल करने की विधि निर्दिष्ट करता है |
repeats | यदि false , तो टाइमर को केवल एक बार फायर करें। यदि true , तो टाइमर को हर interval सेकंड में आग दें। |
टिप्पणियों
एक NSTimer आपको निर्धारित समय अवधि बीतने के बाद लक्ष्य पर एक संदेश भेजने की अनुमति देता है।
एक टाइमर बनाना
यह 5 सेकंड में self पर doSomething विधि को कॉल करने के लिए एक टाइमर बनाएगा।
तीव्र
let timer = NSTimer.scheduledTimerWithTimeInterval(5,
target: self,
selector: Selector(doSomething()),
userInfo: nil,
repeats: false)
स्विफ्ट 3
let timer = Timer.scheduledTimer(timeInterval: 1,
target: self,
selector: #selector(doSomething()),
userInfo: nil,
repeats: true)
उद्देश्य सी
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(doSomething) userInfo:nil repeats:NO];
रिपीट को false/NO सेट करना इंगित करता है कि हम टाइमर को केवल एक बार फायर करना चाहते हैं। यदि हम इसे true/YES सेट करते हैं, तो यह मैन्युअल रूप से अमान्य होने तक हर पाँच सेकंड में आग लगा देगा।
मैन्युअल रूप से एक टाइमर फायरिंग
तीव्र
timer.fire()
उद्देश्य सी
[timer fire];
fire पद्धति को कॉल करने से एक NSTimer उस कार्य को करने का कारण बनता है जो आमतौर पर एक शेड्यूल पर किया जाता था।
एक गैर-दोहराए जाने वाले टाइमर में , यह स्वचालित रूप से टाइमर को अमान्य कर देगा। अर्थात्, समय अंतराल से पहले fire परिणामस्वरूप केवल एक आह्वान होगा।
एक दोहराए जाने वाले टाइमर में , यह बस सामान्य शेड्यूल को बाधित किए बिना कार्रवाई को आमंत्रित करेगा।
एक टाइमर अमान्य है
तीव्र
timer.invalidate()
उद्देश्य सी
[timer invalidate];
यह टाइमर को फायरिंग से रोक देगा। टाइमर थ्रेड में बनाए गए थ्रेड से बुलाया जाना चाहिए, Apple के नोट्स देखें :
आपको यह संदेश उस थ्रेड से भेजना होगा जिस पर टाइमर स्थापित किया गया था। यदि आप इस संदेश को किसी अन्य थ्रेड से भेजते हैं, तो टाइमर से जुड़े इनपुट स्रोत को इसके रन लूप से हटाया नहीं जा सकता है, जो थ्रेड को ठीक से बाहर निकलने से रोक सकता है।
नोट: एक बार टाइमर अमान्य हो जाने के बाद, उसी अमान्य टाइमर को फायर करना असंभव है। इसके अलावा, आपको अमान्य टाइमर को फिर से शुरू करने और फायर विधि को ट्रिगर करने की आवश्यकता है।
टाइमर की आवृत्ति विकल्प
बार-बार टाइमर घटना
तीव्र
class ViewController: UIViewController {
var timer = NSTimer()
override func viewDidLoad() {
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: true)
}
func timerMethod() {
print("Timer method called")
}
func endTimer() {
timer.invalidate()
}
}
स्विफ्ट 3
class ViewController: UIViewController {
var timer = Timer()
override func viewDidLoad() {
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: true)
}
func timerMethod() {
print("Timer method called")
}
func endTimer() {
timer.invalidate()
}
}
यदि वांछित है तो मैन्युअल रूप से अमान्य होना चाहिए।
तीव्र
गैर-दोहराया विलंबित टाइमर घटना
NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: Selector(self.timerMethod()), userInfo: nil, repeats: false)
स्विफ्ट 3
Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(self.timerMethod()), userInfo: nil, repeats: false)
निष्पादन के 3 सेकंड बाद टाइमर को एक बार निकाल दिया जाएगा। एक बार निकाल दिए जाने पर, अपने आप अमान्य हो जाएगा।
टाइमर का उपयोग कर डेटा का पासिंग
यदि आप टाइमर ट्रिगर के साथ कुछ डेटा पास करना चाहते हैं, तो आप इसे userInfo पैरामीटर के साथ कर सकते हैं।
यहां सरल दृष्टिकोण है जो इस बारे में संक्षिप्त जानकारी देता है कि आप टाइमर से ट्रिगर पद्धति पर डेटा कैसे पारित कर सकते हैं।
[ स्विफ्ट 3 ]
Timer.scheduledTimer(timeInterval: 1.0, target: self, selector:#selector(iGotCall(sender:)), userInfo: ["Name": "i am iOS guy"], repeats:true)
[ उद्देश्य - सी ]
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(iGotCall:)
userInfo:@"i am iOS guy" repeats:YES];
कोड की उपरोक्त पंक्ति ["Name": "i am iOS guy"] userInfo । तो अब जब iGotCall कॉल मिलता है तो आप कोड स्निपेट के रूप में नीचे दिए गए मान प्राप्त कर सकते हैं।
[ स्विफ्ट 3 ]
func iGotCall(sender: Timer) {
print((sender.userInfo)!)
}
[ उद्देश्य - सी ]
- (void)iGotCall:(NSTimer*)theTimer {
NSLog (@"%@", (NSString*)[theTimer userInfo]);
}