码迷,mamicode.com
首页 > 移动开发 > 详细

iOS设计模式之NSNotificationCenter 消息中心

时间:2014-11-09 15:22:14      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:ios设计模式   消息中心   nsnotificationcenter   

消息中心模式和KVO模式有点相似,区别在于,KVO  模式是意图在于监听摸一个对应的值的变化,而去出发一个方法相应的动作,而消息中心在于,广播,它就像一个广播基站,发送一条消息,在所有的添加监听的地方都能够收到此信息,并作出不同活着相同的动作,范围更广大,功能更强大


//添加消息中心监听(添加观察者,也能说成添加监听)
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(myNotification:)name:@“test1" object:nil];

它监听test1 整个值是否有人发送整个消息,监听者是self本类,如果监听到,就会触发myNotification 方法

     //通过消息中心发消息,
   
//注意:消息中心,先做监听后发消息
   
//object:发送的参数
    [[NSNotificationCenter defaultCenter]postNotificationName:@“test1" object:arra];

//这个方法可以在本工程的任意类中,这样就能和别的地方进行通信了


//比如说,有五个页面,在前4个页面中都创建一个消息中心用来监听 一个 消息@“change”
// 我们在第五个页面,通过消息中心,发送一个@“change” 消息,这样前四个页面就可以收到这个消息,然后做出相应的动作
//一定要注意,创建消息中心监听  一定要在发送消息之前,  
//灵活运用各种周期函数时解决这个问题的关键



来个实例看看


两个界面   界面1   界面2   界面1创建消息中心监听消息,
界面2 床间消息中心,发送消息,并带有参数


//在一个界面1内创建消息中心
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myNotification:) name:@“test1" object:nil];



在界面1实现监听方法
//监听到消息的时候执行该方法
- (void)myNotification:(NSNotification *)n
{
    //从接受到的消息n中,取出object,即消息中加载的参数
   
//NSString *param = [n object];
   
NSArray *arr = [n object];
   
NSLog(@"%@",arr);
}


在界面2发送一个数组作为参数
 NSArray *arra = [NSArrayarrayWithObjects:@"a",@"d", nil];
   
//通过消息中心发消息,
   
//注意:消息中心,先做监听后发消息
   
//object:发送的参数
    [[NSNotificationCenter defaultCenter] postNotificationName:@“test1" object:arra];

iOS设计模式之NSNotificationCenter 消息中心

标签:ios设计模式   消息中心   nsnotificationcenter   

原文地址:http://blog.csdn.net/wxs0124/article/details/40949491

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!