Nofication太多会影响效率,因为是一对多传递消息。最好用委托的形式进行消息传递,委托是一对一传递的。
发送消息:
[[NSNotificationCenter defaultCenter] postNotificationName:@"messageName"
object:@"参数"
发送多个参数
[[NSNotificationCenter defaultCenter] postNotificationName:@"messageName"
object:nil
userInfo: [NSDictionary dictionaryWithObject:@"jory"
<span> </span> forKey:@"name"|^Archive.zip]];
参数说明:
- postNotificationName:推送消息的名称,匹配在注册消息监听者时的消息名称。
- object:发送消息的实例
- userInfo:发送消息时附带的消息上下文,此实例为一个字典实例(相当于Java里的HashMap)。
接受消息
注册监听:[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(printName:)
name: @"messageName"
<span style="font-family: SimSun;">object:nil]; </span>
参数
- defaultCenter,消息中心只有一个,通过类方法获取它的单例。
- addObserver,添加监听者实例,此处为当前实例
- selector,observer中的一个方法指针,当有消息的时候会执行此方法,并把相关上下文以参数传递过去
- name,注册所关心消息的名称,
- object,这个是对消息发送方的一个过滤,此参数据说明当前监听器仅对某个对象发出的消息感兴趣。
监听方法:
-(void)printName:(Notification *) notification{
id obj = [notification object];//获取到传递的对象
}