通知:
kvo ______ key value observer
观察者机制
使用通知时需要注意:要先监听通知再发送通知
//注册监听通知
//位置:一般写在想要监听一个通知的类中的视图将出现的方法中或者didLoad方法中
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(触发方法名字) name:@“通知的名字”object:参数(可以为nil)];
//发送通知
//通知的名字要一致
[[NSNotificationCenter defaultCenter] postNotificationName:@“通知的名字”object:参数];
- (void)dealloc {
//注册和注销成对出现
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"通知的名字" object:nil];
[super dealloc];
}
- (void)viewDidLoad {
[super viewDidLoad];
//通知:NSNotification
//通知中心: NSNotificationCenter观察发送都在通知中心中操作(单例类)不管在哪里去获取得到的都是同一个对象通知中心这个单例获得方法[NSNotificationCenter defaultCenter];
//通知中心
NSNotificationCenter * center = [NSNotificationCenter defaultCenter];
//通知---initWithName:通知名字 object:发送者(nil self传参数) userInfo:字典类型附加说明信息
NSNotification * notify = [[NSNotification alloc] initWithName:@"000" object:@"99999" userInfo:@{@"color":@"red"}];
//1.发送通知: post
[center postNotification:notify];
//MRC下需要release
[notify release];
//2.post object:发送通知的对象(nil self传参)
[center postNotificationName:@"001" object:nil];
//3.post userInfo:字典类型附加说明信息
[center postNotificationName:@"002" object:selfuserInfo:nil];
/*监听观察通知在接收消息的类中写A(post) ------> B(observe)
*addObserver:添加观察着
*selector:收到通知执行的方法:传对象
*name:要观察的通知的名字
*object :对发送通知者的要求如果设置为腾讯那么只会关心腾讯的通知一般nil
*/
//[NSNotificationCenter defaultCenter]addObserver:<#(nonnull id)#> selector:<#(nonnull SEL)#> name:<#(nullable NSString *)#> object:<#(nullable id)#>];
[center addObserver:self selector:@selector(receive:) name:@"要观察的通知的名字" object:nil];
//发通知之前一定要先确定观察者发送的通知和要观察的通知的名字要一致
//[NSNotificationCenter defaultCenter]addObserver:<#(nonnull id)#> selector:<#(nonnull SEL)#> name:<#(nullable NSString *)#> object:<#(nullable id)#>];
//[NSNotificationCenter defaultCenter]postNotificationName:<#(nonnull NSString *)#> object:<#(nullable id)#>];
//发送的通知不要重名,注册通知之前最好要先移除这个通知,防止这个通知已经被注册
//最优写法:先移除后添加
//[NSNotificationCenter defaultCenter]removeObserver:<#(nonnull id)#> name:<#(nullable NSString *)#> object:<#(nullable id)#>];
}
-(void)receive:(NSNotification*)notify{
}