最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

ios消息机制NSNotificationCenter 和 NSNotification的使用案例

扩展 太平洋学习网 浏览 评论

ios消息机制NSNotification和android的BroadcastReceiver广播机制是一样的,其作用主要是像特定的对象发送特定的消息,接收消息的页面需要先在消息中心NSNotificationCenter注册,起到监听页面动态的作用,下面是iOS消息机制的简单案例,一看就懂!

#import "ListViewController.h"
@interface ListViewController ()
@end
@implementation ListViewController
- (void)viewDidLoad {
    [super viewDidLoad];
}
/**
* 此sendMsg方法为点击事件,点击发送按钮发送消息
* 参数一:name表示发送消息的标示,用于区分消息类型,如聊天信息,新闻提醒等等,可以随便取名字,这里为"msg"聊天消息
* 参数二:object表示发送的消息内容,可以为任何对象
* 参数三:userInfo为NSDictionary字典类型,可以将一个model对象转化为字典类型,
*       例如向“username”为“zhangshan”的用户发送hello信息
*/
- (IBAction)sendMsg:(UIButton *)sender {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"msg" object:@"hello!" userInfo:@{@"username":@"zhangsan"}];
}

@end

NSNotificationCenter对象使用postNotificationName方法将“hello”信息发送给了“zhangsan”的用户,那么如果zhangsan的用户登录进入了聊天界面,该如何接收到别人发送过来的hello信息呢?请看下面的例子。

#import "DetailViewController.h"
@interface DetailViewController ()
@end
@implementation DetailViewController
- (void)viewDidLoad {
    [super viewDidLoad];    
    //页面加载时NSNotificationCenter便向消息中心注册,监听前面定义的name为msg表示的消息,object为nil就好
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotification:) name:@"msg" object:nil];
}
//接收消息的方法
-(void)receiveNotification:(NSNotification *)notification{
    //获取username用户名
    NSString *username = [[notification userInfo] objectForKey:@"username"];
    //如果name标示为“msg”,并且用户名为“zhangsan”才能接收到消息,其他用户则接收不到消息
    if ([[notification name] isEqualToString:@"msg"] && [username isEqualToString:@"zhangsan"]) {
        //以下的object是获取
        self.getLabel.text = [NSString stringWithFormat:@"接收到的消息: %@", [notification object]];
    }
}
@end

notification对象主要页面取值的。

[notification name]  获取消息标示。

[notification userInfo] 获取消息model的字典类型,里面可以封装用户信息,发送给谁。

[notification object] 获取消息具体内容。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/kuozhan/2017/0412/93.html

    与本文相关的文章

    发表我的评论
    取消评论

    表情

    您的回复是我们的动力!

    • 昵称 (必填)

    网友最新评论