通知(Notification)简单的类比一下,公司的老总给下面的员工发通知啦,说明天公司要上市,各部门做一下准备工作。等通知发完,各部门收到后各司其职,做着自己该做的东西。假如Boss是通过公司的内部论坛发送的通知,那么Boss就是发送通知的对象,而公司员工就是通知的接受方,而公司的内部论坛就是通知中心,员要想接收到Boss发送的通知的前提是先在论坛上注册一下。老板只有一个,而接受通知的有多个部门,老板是通过论坛广播的形式发送的通知。说的高大上一点,通知是一种发送给一个或多个观察着,用来通知其在程序中发生了某个事件的消息。Cocoa中的通知及时遵循的是一种广播的模式。
暂且这么类比着,这是根据我个人理解而想出的例子,可能会有不足之处,希望大家批评指正,转载请注明出处。
废话少说,我们如何把上面boss通过论坛发帖的形式来发送通知用Objective-C中的Notification来实现呢,代码走起
1.一个公司得有老板对吧,所以我们要新建一个老板类,公司的内部论坛就是我们OC中的通知中心(NotificationCenter),看完老板的实现代码在说两句吧
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
代码说明:
1.老板要发的消息要放在字典中才能发布,字典的key是帖子的主题,value是帖子的内容
2.创建通知对象就好比老板登陆内部论坛,用notificationWithName设置老板的昵称
3.向通知中心发送消息就是老板发帖啦
2.下面我们就开始模拟各个部门接受通知后要做的事情,人力资源部接到通知后要做的事儿
15 16 17 18 19 20 21 22 | |
代码说明:
1.注册为观察者相当于各部门要在内部论坛注册并关注老板,在关注老板的同时指定当老板发送通知时自己要做些什么事儿
2.doSomething里是各部门要做的事情
3.再添加一个财务部,和上面的代码类似,在这就不写了
4.在main函数里做如下的测试
|
当老板发通知时,各部门会自动调取自动执行的方法,运行结果如下:
|
最后呢,也是最重要的,登录完论坛如果你不使用了,要注销也就是要退出。那么通知也是一样的,你需要在dealloc方法中移除观察者即可。
上面的总结暂且这么说吧,是根据笔者自己的理解所总结的内容,不免有偏颇之处,欢迎批评指正,转载请注明出处。
作者:青玉伏案
出处:http://www.cnblogs.com/ludashi/
本文版权归作者和共博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
收简历:某互联网公司,招聘iOS/Android靠谱工程师,入职后,可内部联系楼主,有小礼品赠送,有意者可邮箱投递简历:[email protected]