2

我正在尝试从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 语言本身,也不知道如何调试这个问题。如果您有任何可以帮助调试此问题的指示,请告诉我。

4

0 回答 0