इसमें 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()
}
}
प्रयास करें, मैं सच में स्थिर फ़ंक्शन को कॉल किया गया था जब मैं एक instantiated 'DispatchSource.timer (...)' की जरूरत है। दूसरी बात में मेरी 'देरी' एक इंट 64 थी जो प्रकार के मुद्दों का कारण बनती थी। –
ऐसा लगता है कि यह बीटा 4 –
एचएम में बदल गया है। उसमें देखने की जरूरत है। –