MVC中的广播站机制,常用于控制器(Control)和模型(Model)之间的的盲通信.
如何收听广播?
-
1.创建单例
//返回一个类似于 NSUserDefault 的共享实例(单例),就用这个对象来收听广播 [NSNotificationCenter defaultCenter]
-
2.调用单例方法
/* 使用"通知"进入监听系统广播 Observer(id)observer: 想要收听广播的对象(一般都是 self ) selector(SEL)methodToInvokeIfSomethingHappens: 收到通知后要调用的方法 name(NSString *)name: 你要收听的广播站 object(id)sender: 是否想只收听某个特定对象发出的广播 */ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(preferredFontsChanged:) name:UIContentSizeCategoryDidChangeNotification object:nil];
-
3.创建收到通知后,要响应的方法
- (void)preferredFontsChanged:(NSNotification *)notification{ /* notification对象有三个属性: notification.name: 广播站名称 notification.object: 向你发送这个通知的对象(就是 addObserver 方法中的 sender) notification.userInfo: 是一个 ID 取决于广播站 */ [self usePreferredFonts]; }
-
4.在 view 将要退出显示的时候要,停用一些服务和操作,减少 CUP 占用(包括移除通知)
- (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; //移除监听, 用于控制内存 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIContentSizeCategoryDidChangeNotification object:nil]; }
-
5.最后在 dealloc 中移除通知(但是不建议使用)
//最后的保险做法 - (void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self]; }