2016-11-04 79 views
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了,但仍然無法正常工作。

回答

0

object: self更改爲object: nil,試試吧。