【发布时间】: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。