对象间的通讯以一种盲目结构进行,也就是MVC的广播站机制,在iOS7里叫作Notification通知数据库
获取通知中心共享实例: [NSNotificationCenter defaultCenter]
安全
收听系统广播:addObserver;app
关闭广播:removeObserver(很重要)指针
[center removeObserver:self];
code
ororm
[center removeObserver:self name:UIContentSizeCategoryDidChangeNotification object:nil];
dealloc: 会在你的对象将要离开堆前被调用,全部属性都为nil,几乎已经再也不是一个对象的时候 调用这个方法。是最后的关联。因此也能够在这里解决不安全保留指针的问题。可是不建议使用server
使用数据库构建更复杂模型的时候,介绍如何使用广播站机制来监听模型的变化(后面介绍)对象
- (void)addObserver:(id)observer // 想要收听广播的对象(self当前控制器) <!--当广播上出现内容时会调用它--> selector:(SEL)methodToInvokeIfSomethingHappens <!--name是广播站的名称--> name:(NSString *)name <!--你是否只想收听某个特定对象发出的广播(nil表示频率上任何广播)--> object:(id)sender;
- (void)methodToInvokeIfSomethingHappens:(NSNotification *)notification { <!--广播站的名字,和上面的参数同样--> notification.name <!--object 就是向你发送这个通知的对象--> notification.object <!--userInfo是取决于广播站发出的信息--> notification.userInfo // notification-specific information about what happened } ps:userInfo你想知道是什么,能够用isKindOfClass或者respondsToSelector等来使用它
<!--注意:该方法里不能访问属性,由于此时属性已经从堆中移除--> - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; }