我正在尝试从NSNotificationCenter
我的应用程序中收听一些消息,并在收到一些消息时向 JS 端发送事件。主要是,我对NSSystemTimeZoneDidChangeNotification
可用于检测用户设备时区是否已更改的消息感兴趣。我AppDelegate.swift
为此添加了以下代码:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
// Existing code
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(AppDelegate.timezoneChanged), name: NSSystemTimeZoneDidChangeNotification, object: nil)
}
func timezoneChanged() {
let appEventEmitter = self.bridge.moduleForClass(AppEventEmitter) as! AppEventEmitter
appEventEmitter.sendEventWithName("timezoneChanged", body:nil)
}
更改后,如果我更改手机上的时区并转到应用程序,timezoneChanged
则会调用该函数,但我会立即在代码中看到异常并且应用程序崩溃
fatal error: unexpectedly found nil while unwrapping an Optional value
我想问题出在appEventEmitter
. 我在应用程序的其他部分使用确切的一些代码将事件发送到 JS 端,但我不知道为什么它在这里不起作用。如果我将timezoneChanged
函数实现更改为仅打印语句,那么我可以看到打印语句并且应用程序不会崩溃。
我不知道 Swift 语言本身,也不知道如何调试这个问题。如果您有任何可以帮助调试此问题的指示,请告诉我。