未触发UIApplicationSignificantTimeChange通知

时间:2016-11-04 17:43:09

标签: ios swift

我想使用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,但仍然不起作用。

1 个答案:

答案 0 :(得分:0)

object: self更改为object: nil,尝试一下。