2016-07-16 6 views
9

इसमें DispatchSourceTimer के साथ कुछ करना है, लेकिन मुझे कहीं भी नहीं मिल सकता है।मैं स्विफ्ट 3 शेड्यूलिंग का उपयोग कैसे करूं?

DispatchSourceTimer.scheduleRepeating(deadline:.now(), interval:.milliseconds(delay), leeway:.milliseconds(1)) 

मेरे समाधान

समस्या प्रकार भ्रम के साथ क्या करना था:

यह मैं "अस्पष्ट संदर्भ" के बारे में एक त्रुटि देता है। सही दिशा में मुझे इंगित करने के लिए धन्यवाद मैट। मेरा पूरा परिणाम यहाँ है।

private var queueNo = 0 
@discardableResult func repeater(_ delay:Int, _ closure:(()->())) -> (()->()) { 
    let queue = DispatchQueue(label: "repeater\(queueNo)", attributes: []) 
    queueNo += 1 
    let timer = DispatchSource.makeTimerSource(flags: [], queue: queue) 
    timer.scheduleRepeating(deadline: .now() + .milliseconds(delay), interval: .milliseconds(delay), leeway: .milliseconds(1)) 
    timer.setEventHandler { 
     DispatchQueue.main.async(execute: closure) 
    } 
    timer.resume() 
    return { 
     timer.cancel() 
    } 
} 
+0

प्रयास करें, मैं सच में स्थिर फ़ंक्शन को कॉल किया गया था जब मैं एक instantiated 'DispatchSource.timer (...)' की जरूरत है। दूसरी बात में मेरी 'देरी' एक इंट 64 थी जो प्रकार के मुद्दों का कारण बनती थी। –

+0

ऐसा लगता है कि यह बीटा 4 –

+0

एचएम में बदल गया है। उसमें देखने की जरूरत है। –

उत्तर

0

इस

override func viewDidLoad() { 
    super.viewDidLoad() 
    //Swift 3 
    timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.update), userInfo: nil, repeats: true); 
} 

func update() { 
    // Do Something 
} 
स्टार्टर के लिए
+0

यह सवाल का जवाब नहीं देता है। एनएसटीमर और जीसीडी टाइमर अलग-अलग चीजें हैं। जीसीडी टाइमर इसे निष्पादित करने के तरीके पर अधिक नियंत्रण देते हैं, प्राथमिकता दी जा सकती है, अधिक बैटरी अनुकूल हैं ... – Moose

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