[英]Swift: How do I invalidate all running timers?
我目前正在處理一個項目,其他第三方開發人員可以向 iOS 應用程序添加功能。 因此,我不希望他們啟動計時器並稍后在對象實例已被刪除時執行某些操作。 那么有沒有一種方法可以在不引用它們的情況下使所有正在運行的計時器或某些正在運行的計時器無效。 如果沒有,我可以通過其他任何方式為開發人員啟用計時器功能,但防止他們在“區域”之外使用它們。 我應該覆蓋計時器還是任何更好的建議?
非常感謝
您可以繼承Timer
並擁有一個共享實例,該實例存儲當前使用的所有計時器。 每當您需要Timer
時,您都必須使用此CustomTimer
而不是Timer
。
class CustomTimer: Timer {
static var sharedTimers: [CustomTimer] = []
static func invalidateAllTimers() {
for timer in CustomTimer.sharedTimers {
timer.invalidate()
}
}
// Use appropriate initializer and super calls.
init() {
CustomTimer.sharedTimers.append(self)
}
deinit {
CustomTimer.sharedTimers.removeAll { (timer) -> Bool in
return timer === self
}
}
}
現在您可以使用invalidateAllTimers
方法使所有計時器invalidateAllTimers
。
CustomTimer.invalidateAllTimers()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.