0
我想用UIApplicationSignificantTimeChange
來檢查的時候,天已經改變了,我在我自己的類封裝,所以我可以很容易用它更多的視圖控制器:UIApplicationSignificantTimeChange通知不會被觸發
public final class DayChangedObserver {
private var token: NSObjectProtocol!
public init?(handler: @escaping() ->()) {
token = NotificationCenter.default.addObserver(forName: NSNotification.Name.UIApplicationSignificantTimeChange, object: self, queue: nil) { _ in
handler()
}
}
deinit {
NotificationCenter.default.removeObserver(token)
}
}
而且我把這個代碼從我的視圖控制器:
override func viewDidLoad() {
super.viewDidLoad()
_ = DayChangedObserver() {
print("Day has changed")
}
}
我在我的iPhone上測試這個,我手動更改時間。但它似乎不適合我的班級。
我的執行有問題嗎?因爲它在過去使用這個事件時沒有用(沒有我自己的類實現)。
EDIT1:
我看來,deinit
是後立即調用,所以我用一個實例變量保持很強的參考,現在是不是deinit
了,但仍然無法正常工作。