在一个 swift OS X 项目中,我试图注册一个观察者来处理从 WebView 发送的 WebHistory 通知。我认为注册过程是成功的,但是当我的通知处理程序应该被调用时,会引发未捕获的异常;具体来说,错误消息是“-[project_name.HistoryController didAddHistoryItems]:无法识别的选择器发送到实例 0x600000002420”。但是HistoryController定义了方法
func didAddHistoryItems(通知:NSNotification)。
所以,出了什么问题?我真的很挣扎。我已经和这个问题斗争了好几天了。我尝试在程序中的各个位置实例化我的 HistoryController (applicationDidFinishLaunching、WebView 的 viewDidLoad 方法、WebView 的 viewDidAppear 方法),甚至将其实例化为全局变量,但结果没有改变。观察者注册如下:
NSNotificationCenter.defaultCenter().addObserver(self, 选择器: Selector("didAddHistoryItems"), 名称: WebHistoryItemsAddedNotification, 对象:nil)
有人可以帮忙吗?我错过了什么?
最佳答案
您需要将 :
添加到选择器的末尾,以表明该方法有参数。该行应该是:
NSNotificationCenter.defaultCenter().addObserver(self, 选择器: Selector("didAddHistoryItems:"), name: WebHistoryItemsAddedNotification, object:nil)
您也不需要 Selector(...)
部分,只需执行以下操作:
NSNotificationCenter.defaultCenter().addObserver(self, 选择器: "didAddHistoryItems:", name: WebHistoryItemsAddedNotification, object:nil)
关于macos - 注册网络历史记录通知处理程序时引发意外异常,出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32921823/