iOS中通知和代理的区别

------共同点

     利用通知和代理都能完成对象间的通信。(比如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;
}



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值