对事件进行处理有三种方法:
1:忘记了
2:代理
3:通知
使用案例就是76天-项目实战--宾果社区 中的applegate.m下的接收消息方法中接收到的消息内容传递到chatviewcontroller.m中。
applegate.m中
//接收消息
- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
{
//获得发送信息的用户名
XMPPJID * jid = [message from];
//获得发送过来的body
NSString * body = [[message elementForName:@"body"] stringValue];
//合并发送人和发送内容
body = [NSString stringWithFormat:@"%@: %@", [jid user], body];
//创建一个通知
NSNotification * note = [[NSNotification alloc]initWithName:@"COMEMSG" object:body userInfo:nil];
//发通知 往通知中心投递通知
[[NSNotificationCenter defaultCenter]postNotification:note];
}
chatviewcontroller.m中
这里涉及到两个方法:
一个是在- (void)viewDidLoad 中:需要注册通知从而得到通知池中已经放入的通知,具体如下:
- (void)viewDidLoad {
[super viewDidLoad];
//注册通知,这样就可以得到通知池中已经放入的通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(comeMessage:) name:@"COMEMSG" object:nil];
}
之后实现通知的方法:
//处理得到的通知
-(void)comeMessage:(id)_o
{
NSLog(@"%@", [_o object]);
}