YJ的编码生活

只为记录自己的码农生活···

iOS---NSNotification使用解析

一、使用步骤
使用NSNotification很简单, 只要三步
1、添加观察者 在需要的地方注册要观察的通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update:) name:@"userName" object:nil];

2、发送通知 在某地方发送通知

NSDictionary *dict =[[NSDictionary alloc] initWithObjectsAndKeys:self.userNameTextField.text, @"userNameKey", nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"userName" object:self userInfo:dict];

3、移除观察者 移除通知

[[NSNotificationCenter defaultCenter] removeObserver:@"userName"];

二、参数解析

    1、[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update:) name:@"userName" object:nil];
    参数说明:   
            1)观察者,self代表本控制器
            2)接收到通知后调用的方法 @selector(update:)
            3)通知名称 @"userName"
            4)接收哪个发送者的通知。 nil代表接收所有发送者的通知
    2、[[NSNotificationCenter defaultCenter] postNotificationName:@"userName" object:self userInfo:dict];
    参数说明:
            1)通知名称 @"userName"
            2)通知发送者 self
            3)附带的信息 dict(如需要传的数据)
 3、[[NSNotificationCenter defaultCenter] removeObserver:@"userName"];
    参数说明:
            1)通知名称 @"userName"

总结:由此可见都需要通知名称,而且都一样,为了避免通知名称错误,可以写成宏。

三、注意事项
1、注册了观察通知的控制器就要移动要观察的通知。这是因为,当控制器因为某些原因比如内存问题而被销毁的时候,通知中心被注册的该通知还是存在的。而当其他有地方发送该通知的时候,通知中心会继续转发,但是转发的对象已经不存在了,这时候就会crash了。所有有添加就要有移除。

2、有些可能习惯在viewWillAppear和viewWillDisappear方法中配对使用,

- (void)viewWillAppear:(BOOL)animated
 {
 [super viewWillAppear:animated];

 // 注册通知
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update:) name:@"userName1" object:nil];
 }

 - (void)viewWillDisappear:(BOOL)animated
 {
 [super viewWillDisappear:animated];
 [[NSNotificationCenter defaultCenter] removeObserver:@"userName1"];
 }

不是说不行,但是这两个方法属于会被经常调用的方法,比如左滑右滑的时候会重复调用,还是要多考虑一下业务逻辑,避免不要的坑,
所以建议在viewDidLoad中注册通知,在dealloc中移除通知 (注:在ARC模式下 dealloc不需要 [super dealloc])

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:@"userName"];
}

3、通知使用比较简单,适用场景 1对多模式 发出一个通知,多个对象监听。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yj229201093/article/details/52369270
个人分类: iOS随手记
想对作者说点什么? 我来说一句

8583报文的使用解析

2018年04月24日 72KB 下载

使用dom4j解析XML

2011年07月29日 82KB 下载

使用 dom4j 解析 XML

2011年08月21日 144KB 下载

使用DOM解析XML和使用SAX解析XML

2013年03月24日 422KB 下载

27.使用SAX解析XML.rar

2011年09月26日 50.7MB 下载

XML的DOM4J的解析方式

2012年05月08日 3KB 下载

使用sax解析xml

2012年09月22日 148KB 下载

xml解析文件的两种方式

2017年08月23日 20KB 下载

Android .xml文件三种解析方式

2014年07月30日 1.48MB 下载

没有更多推荐了,返回首页

不良信息举报

iOS---NSNotification使用解析

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭