簡體   English   中英

Swift:如何使所有正在運行的計時器無效?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM