【问题标题】:Sigabrt when using Notifications in Swift在 Swift 中使用通知时的 Sigabrt
【发布时间】:2017-03-04 05:45:14
【问题描述】:

我正在用 Swift 开发一个应用程序。

到目前为止一切都很好,但我得到了一个 sigabrt,而且由于 Swift 还没有太多文档,这很烦人。

委托:AppDelegate.swift

在 func 应用程序中 ( ... ) { ... }

我愿意:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "saveMyItems:", name:"saveItems", object: nil)

我已经看到了在选择器方法之后有冒号很重要的概念。

在 AppDelegate 类中我也有选择器方法:

func saveMyItems(notification: NSNotification){
    //Action take on Notification
    NSLog(" ======== Saving... ======== ")
}

然后在我的 ViewController 中执行:

@IBAction func saveSettings(sender: AnyObject) {  
  NSNotificationCenter.defaultCenter().postNotificationName("saveItems", object: nil)
}

我不知道是什么原因造成的,所以任何建议表示赞赏!

【问题讨论】:

  • 您得到的SIGABRT 的详细信息是什么?您有堆栈跟踪和/或详细的错误消息吗?
  • 嗨,迈克,我已经解决了。这不是由通知引起的,而是前面的行:“NSNotificationCenter.defaultCenter().postNotificationName("saveItems", object: nil)” 我只是在通知模式部分盲目地盯着,忘了看简单的行就在它之前!我认为 Swift 比 Objective-C 好很多,只是可惜教程还没有很多!
  • 那么您修复的 .postNotificationName 之前的这一行是什么?我还在同一功能上获得了 SIGABRT,而且我没有可能导致此问题的“之前的行”,所以我很确定它是 postNotificationName()。
  • 不幸的是,我无法看到一年前我做了什么来修复这条线,因为我还改变了更多的东西。当时我还没有完全理解 Swift(不是我现在完全理解,但至少对这种结构有更好的了解)。您可能刚刚忘记了 addObserver 中的冒号(或打错了字),这会在您发布通知时导致 sigabort。

标签: ios swift


【解决方案1】:

只需将选择器从“saveItems”更改为“saveItems:”即可

【讨论】:

  • 这更像是一个评论而不是一个答案。如果你earn足够reputation你就可以comment on any post
  • 其实这是一个答案。选择器末尾必须有一个冒号 (:) 以避免出现此 sigabrt 错误。
猜你喜欢
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
相关资源
最近更新 更多