通知中心的使用

// 通知中心的第一种使用 

1 必须先监听

// addObserver 添加观察者

//  selector  只要监听到通知就会调用这个方法

// name 通知的名称

// object 谁发出的通知

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

// name 通知的名称

// object 谁发出的通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"note" object:nil];

// 通知的方法

- (void)Notification

{

NSLog(@"收到通知");

}

// 通知中心的第二种使用

// name 通知的名称

// object 谁发出的通知

// queue 决定block在哪个线程中调用 传nil 在发布的线程中执行  [NSOperationQueue mainQueue]; 一般在主线程中调用

// 注意的是这个通知中心 没有添加观察者 移除的时候移除返回值

_object =  [[NSNotificationCenter defaultCenter] addObserverForName:@"note" object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * _Nonnull note) {

//  这里的block 在监听在通知时候 调用

[NSOperationQueue mainQueue];

}];

- (void)Notification

{

NSLog(@"收到通知");

}

-(void)dealloc

{

// 移除通知 

[[NSNotificationCenter defaultCenter] removeObserver:_object];

}

 通知中心使用注意点 

通知中心的监听方法  在哪个线程执行 是由发出通知所在的线程决定的  所以在 监听的事件中 更新UI时要回到主线程中 避免监听事件在子线程中执行了 

dispatch_async(dispatch_get_main_queue(), ^{

// 更新UI

});


// 全局异步队列

dispatch_sync(dispatch_get_global_queue(0, 0), ^{

});

// 主队列

dispatch_async(dispatch_get_main_queue(), ^{

// 更新UI

});

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容