在一个快速的OS X项目中,我正在尝试注册一个观察者来处理从WebView发送的WebHistory Notifications . 我认为注册过程是成功的,但是当我的通知处理程序被调用时,会引发未捕获的异常;具体来说,错误消息是“ - [project_name.HistoryController didAddHistoryItems]:无法识别的选择器发送到实例0x600000002420” . 但HistoryController定义了该方法
func didAddHistoryItems(通知:NSNotification) .
那么,怎么了?我真的很挣扎 . 我几天来一直在反对这个问题 . 我已经尝试在程序的各个地方实例化我的HistoryController(我的WebView的applicationDidFinishLaunching,viewDidLoad方法,我的WebView的viewDidAppear方法),甚至将它实例化为全局变量,但结果不会改变 . 观察员注册如下:
NSNotificationCenter.defaultCenter() . addObserver(self,selector:Selector(“didAddHistoryItems”),name:WebHistoryItemsAddedNotification,object:nil)
有人可以帮忙吗?我错过了什么?
1 回答
您需要将
:
添加到选择器的末尾以指示该方法具有参数 . 该行应该是:NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("didAddHistoryItems:"), name: WebHistoryItemsAddedNotification, object:nil)
您也不需要
Selector(...)
部分,可以简单地执行:NSNotificationCenter.defaultCenter().addObserver(self, selector: "didAddHistoryItems:", name: WebHistoryItemsAddedNotification, object:nil)