首页 > 技术精文 > iOS > Swift中使用NSNotificationCenter注意点
2016
03-22

Swift中使用NSNotificationCenter注意点

我也是菜鸟,现在需要用到NSNotificationCenter,这个就类似Android里面的广播,iOS中叫观察者Observer。简单写了一个例子成功运行。先看例子。

let Center = NSNotificationCenter.defaultCenter()
Center.addObserver(self, selector: "Command:", name: className(), object: nil)

//回调方法
func Command(notification:NSNotification){
     print("Command->notification")
 }

//发送广播
Center.postNotificationName(className(), object: nil)

//快速取当前的类名
 func className() -> String!{
     return String(classForCoder)
 }
   

这个是在ViewController中完成的,但是我后来放到普通的NSObject类中,执行这些代码,Command函数其实是不会触发的。所以这个只有在VC中使用。我现在也没有文档,也不敢100%确定!

最后,在deinit方法里面移除广播观察者!

 deinit{
     Center.removeObserver(self)
     print("\(self.classForCoder) deinit")
 }

最后来看下,怎么传参数,以上面为例!先发送广播

Center.postNotificationName(className(), object: ["name":"ithtw","pwd":"123"])

然后是接收

func Command(notification:NSNotification){
     let params = notification.object as! [String:AnyObject]//健值对 方便取值
     print("广播接收的值:\(params["name"] as! String) 和 \(params["pwd"] as! String)")
}

 

最后编辑:
作者:小企鹅
这个作者貌似有点懒,什么都没有留下。
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!

留下一个回复