每个应用中只会有一个通知中心对象:NSNotificationCenter,通过单例方法,创建唯一对象,通知中心对象负责管理所有的通知,包括通知的发出和管理“通知监听者”。
无论是通知发布者、还是通知的监听者,都是通过通知中心发布通知、设置监听者。
发布通知
方法:
postNotificationName:<#(nonnull NSString *)#> object:<#(nullable id)#> userInfo:<#(nullable NSDictionary *)#>
举例:
name:通知的名字(监听者就是通过这个名字来判断是否是自己需要监听的通知)
object:谁发布的通知
userInfo:通知的内容(这里面包含了通知的内容)
[[NSNotificationCenter defaultCenter] postNotificationName:@“通知的名字” object: obj1 userInfo:@{} ];
设置监听者
方法:
addObserver:<#(nonnull id)#> selector:<#(nonnull SEL)#> name:<#(nullable NSString *)#> object:<#(nullable id)#>
举例:
observer:监听者
selector:监听者需要执行的方法
name:通知的名字
object:监听那个对象
[[NSNotificationCenter defaultCenter] addobsever:obj1 selector:(action:) nam:@“通知的名字” object:obj2];
用户设备的状态改变的时候会向通知中心发出的通知:
键盘在状态改变的时候会向通知中心发出的通知:
为了防止在监听者对象销毁的时候,监听中心仍然有这个监听者,从而当其监听的某个通知发生的时候,向一个已经销毁的对象发送通知,需要在对象销毁的时候,从通知中心把对应的监听者同时删除,需要重写:-(void)dealloc:
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeobsever]; //在对象销毁的时候同时从通知中心中删除监听者对象。
}
网友评论