(स्विफ्ट) एक वैकल्पिक:
class GCDTimer {
private var _timer : dispatch_source_t?
init() {
}
private func _createTheTimer(interval : Double, queue : dispatch_queue_t, block : (() -> Void)) -> dispatch_source_t
{
let timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
if (timer != nil)
{
dispatch_source_set_timer(timer, dispatch_time(DISPATCH_TIME_NOW, Int64(interval * Double(NSEC_PER_SEC))), UInt64(interval * Double(NSEC_PER_SEC)), (1 * NSEC_PER_SEC)/10);
dispatch_source_set_event_handler(timer, block);
dispatch_resume(timer);
}
return timer;
}
func start(interval : Double, block : (() -> Void))
{
let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
_timer = _createTheTimer(interval, queue: queue, block: block)
}
func stop()
{
if (_timer != nil) {
dispatch_source_cancel(_timer!);
_timer = nil;
}
}
}
तो आप इस तरह का GCD आधारित टाइमर प्रणाली का उपयोग कर सकते हैं टाइमर को आग लगाने के लिए, जब यह लाइन निष्पादित की जाती है, तो यह शुरू होता है, सही? –
प्रलेखन से: "आप कई इनपुट मोड में टाइमर जोड़ सकते हैं। निर्दिष्ट मोड में चलते समय, रिसीवर टाइमर को इसकी निर्धारित अग्नि तिथि पर या उसके बाद आग लगने का कारण बनता है। फायरिंग पर, टाइमर अपने संबंधित हैंडलर रूटीन को आमंत्रित करता है, जो टाइमर एक निर्दिष्ट वस्तु पर एक चयनकर्ता है। " 'वर myInterval: –