Objective-C(十九、通知-消息发送模式之一)——iOS开发基础
来源:互联网 发布:zbrush mac安装 编辑:程序博客网 时间:2024/06/06 01:23
结合之前的学习笔记以及参考《Objective-C编程全解(第三版)》,对Objective-C知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~
十九、通知-消息发送模式之一
1、几个基本概念
(1)通知:在面向对象的程序中,有时需要将发生的时间通知给多个对象的消息发送模式;
(2)通知中心:期望取得通知的对象预先向通知中心注册期望取得的通知;
(3)发送:某对象向通知中心发送消息发送请求,只有注册过该通知单额对象,都可获得通知中心推送的消息;
(4)观察者:消息发送目标,在通知中心注册的对象(可以有多个);
(5)多播:某个对象向特定的多个对象发送消息,通知就是多播的一种
2、通知对象:向通知中心发送消息,必要的信息会在NSNotification类实例中集中后发送给通知中心
+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject;+ (instancetype)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
变量说明:
aName:识别通知的短文本,向NSNotification接口发送如下消息可取出名字
anObject:和通知一起发送的附带信息的对象,多为发送通知的对象,也可为nil
userInfo:传递和通知相关的各种信息,也可为nil
3、通知中心NSNotificationCenter
(1)系统有默认的通知中心,一般不用自己创建。类方法获取
+ (NSNotificationCenter *)defaultCenter;[NSNotificationCenter defaultCenter];
(2)通知发送
- (void)postNotification:(NSNotification *)notification;- (void)postNotificationName:(NSString *)aName object:(id)anObject;- (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)aUserInfo;
指定通知名、对象和用户字典生成通知,然后发送给接收者的通知中心
(3)观察者注册
- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject;
变量说明:
observer:通知的监听者
aSelector:收到通知后,会调用observer的此方法。
aName:通知名,当不为nil时,只接受特定对象发送的通知;如果未nil表示没有设定的发送源;
object:通知的发送者
仅指定特定的多个通知名的通知时,可以将各个通知名分别在通知中心注册,或者指定通知名为nil使其发送有关所有通知名的消息,并在接收后只处理必要的消息;两者都为nil则可以接收所有关于发送消息的通知(这是书上原话)
(4)删除观察者的注册
- (void)removeObserver:(id)observer;- (void)removeObserver:(id)observer name:(NSString *)aName object:(id)anObject;[NSNotificationCenter defaultCenter] removeObserver:obj];
(5)关于内存管理
(1)在引用计数管理的情况下,通知中心在注册观察者时,并不retain观察者及发送元对象。因此释放这些对象之前,要确实从通知中心删除相关设置。否则指向释放对象的指针会变成空指针;(即要remove)
(2)在垃圾回收机制时,通知者和发送源对象会使用弱引用在通知中心注册。无论是否注册,都可能被回收释放。无需显式删除观察者的注册;
我个人简单地理解一下,就是下面几句白话~
(1)通知中心有默认的,不要纠结它到底在哪里,要不要创建,只要抓好发送通知和观察者就可以;
(2)可以有多个观察者,注册便是;
(3)通知对象可以不用创立,直接发送通知就可以了;
(4)观察者的地方add,remove;
(5)name为nil,可以接受所有发送的通知
这部分的代码例子,请参考下一篇
“通知模式实现两个textField传值及模态视图——iOS开发”
- Objective-C(十九、通知-消息发送模式之一)——iOS开发基础
- Objective-C(六、消息发送机制,选择器和SEL类型)——iOS开发基础
- Objective-C(十三、字典类)——iOS开发基础
- IOS开发Objective-C基础之—self.用法
- IOS开发Objective-C基础之—self.用法
- IOS开发系列—Objective-C之基础概览
- IOS开发系列—Objective-C之基础概览
- iOS开发系列—Objective-C之基础概览
- iOS开发系列—Objective-C之基础概览
- iOS基础——Objective-C基础
- Objective-C编程之——发送消息Send Message
- iOS开发 -- Objective-C 消息转发
- ios学习路线—Objective-C(通知机制)
- iOS开发本地通知(每天定点发送消息推送)
- Objective-C消息模式
- iOS开发:Objective-C中通知与协议的区别?
- iOS开发:Objective-C中通知与协议的区别?
- objective-c ios 通知中心
- 欢迎使用CSDN-markdown编辑器
- CC3200跟服务器的通信格式及解析json数据方法
- TopolHold操作
- Android GPS HAL详解
- 树
- Objective-C(十九、通知-消息发送模式之一)——iOS开发基础
- POJ 3083 Children of the Candy Corn(bfs+dfs)
- layout 分层技巧
- Apache mina -Processor线程逻辑
- qibuild的环境配置
- LU-AS模块
- Unity定制,将属性暴露在Inspector面板上
- Python绘制CPU曲线图
- 理解三层转发原理