通知
本文中事先建好三个对象p1,p2,p3,因为与本文关系不大所以不在此作代码展示
- 新建一个通知(NSNotification),供以后由通知中心(NSNotificationCenter)去发送(Post),该步也可以省去,直接在要发通知时,由通知中心创建
NSNotification *notificaty = [NSNotification notificationWithName:@"help" object:p1];
设置了notification的三个属性,name为通知名,object为发送通知的对象,userInfo装上要传数据的字典,根据需要,可以省去
- 向通知中心注册两个观察者,一旦有相关通知下发,立即通知到观察者
[center addObserver:p2 selector:@selector(didReceiveNotification:) name:@"helps" object:nil];
[center addObserver:p3 selector:@selector(didReceiveNotification:) name:@"help" object:nil];
此处当p2收到helps的命令就会执行selector,当p3收到help的命令就会执行selector,object设置为nil,表示不管哪个对象发送了这个通知都会执行
- 发送通知,第1点只是有个通知,但是并未完成发送的动作,发送的动作由通知中心完成
[center postNotification:notificaty];
- 当一个观察者释放后,再去发送通知,还是会去调用selector,而在方法内的self实际上已经被释放了,这样是不安全的,所以在一个观察者释放前,需要移除注册的通知