iOS中通知和代理的区别
2015-08-26 16:54
507 查看
------共同点
利用通知和代理都能完成对象间的通信。(比如A对象告诉D对象发生了什么事情,A对象传递数据给D对象)
------不同点
代理:只能是一对一的关系(一个对象只能告诉另外一个对象发生了什么事情)
通知:多对多关系(一个对象能告诉N个对象发生了什么事情,一个对象能得知N个对象发生了什么事情)
------------------------------------------------------------------------------------------------------------------------------------------------------------
通知的一个简单示例:
利用通知和代理都能完成对象间的通信。(比如A对象告诉D对象发生了什么事情,A对象传递数据给D对象)
------不同点
代理:只能是一对一的关系(一个对象只能告诉另外一个对象发生了什么事情)
通知:多对多关系(一个对象能告诉N个对象发生了什么事情,一个对象能得知N个对象发生了什么事情)
------------------------------------------------------------------------------------------------------------------------------------------------------------
通知的一个简单示例:
// // main.m // notice // // Copyright (c) 2015年 juanjuan. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" #import "NewsCompany.h" int main(int argc, const char * argv[]) { @autoreleasepool { //1.初始化机构 NewsCompany *tx = [[NewsCompany alloc] init]; tx.name = @"腾讯新闻"; NewsCompany *sina = [[NewsCompany alloc] init]; sina.name = @"新浪新闻"; //2.初始化三个人 Person *zhangsan = [[Person alloc] init]; zhangsan.name = @"张三"; Person *lisi = [[Person alloc] init]; lisi.name = @"李四"; Person *wangwu = [[Person alloc] init]; wangwu.name = @"王五"; NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; //3.注册通知的监听器(即能监听通知) // 添加监听器 //张三只接收腾讯的军事新闻 [center addObserver:zhangsan selector:@selector(newsCome:) name:@"junshi_news_come" object:tx]; [center addObserver:wangwu selector:@selector(newsCome:) name:@"yule_news_come" object:sina]; //4.模拟发布新闻 //tx发布了一则军事新闻,名字是junshi_news_come [center postNotificationName:@"junshi_news_come" object:tx userInfo:@{@"title":@"伊拉克战争停止了", @"intro":@"伊拉克战争。。。。。。。。。"}]; [center postNotificationName:@"yule_news_come" object:sina userInfo:@{@"title":@"啊呜啊呜啊呜", @"intro":@"----================。。。。。。。。。"}]; //最后一定要移除下监听 } return 0; }
相关文章推荐
- iOS-NSUserDefaults的用法(轻量级本地数据存储)
- IOS学习第七篇 ——Protocol协议
- iOS 9 学习系列:MapKit 的新变化(Flyover、交通和自定义)
- ios 设置状态栏风格
- 解决港版A1530 ios8 联通4G 电话打不进无法接通的问题,联通4G开关开启方法
- Nagios upgrade 3.x to 4.x 升级
- IOS NSUserDefaults 的用法
- [转]iOS技巧之获取本机通讯录中的内容,解析通讯录源代码
- iOS 万能跳转界面方法 (runtime实用篇一)
- 【iOS】配置和使用静态库
- iOS7之后的导航栏遮盖问题
- iOS开发 - 21.实用技术之获取文件的MIMEType类型
- IOS学习第六篇——代码块(block)
- iOS开发--TDD的iOS开发初步以及Kiwi使用入门
- IOS自带二维码生成
- ios copy 与 mutablecopy
- iOS链式编程框架介绍之LinkBlock
- iOS iOS8推送消息的快速回复处理
- IOS tableView通过代码自定义cell
- iOS学习笔记20-通过AirServer使用AirPlay镜像并实现多屏幕显示控制