美文网首页
NSNotificationCenter 的线程相关问题

NSNotificationCenter 的线程相关问题

作者: YGoooooooooal | 来源:发表于2016-12-26 12:23 被阅读52次
  1. 写在ViewController中的注册通知,在页面pop后会自动在通知中心移除自己;写在其他对象中的注册通知,释放后不会自动移除自己,这时候会引起崩溃。
  2. Viewcontroller正确的写法应该是在willappear添加观察,在willdisappear移除自己。
  3. 发送通知的线程可能和接受通知的线程可能不是同一个线程,在接受通知时,需要单独处理。(NSNotificationCenter消息的接受线程是基于发送消息的线程的。也就是同步的,而有时候UI必须在主线程处理,不然会不响应,所以要针对处理)

eg.

//接受消息通知的回调
- (void)test
{
   if ([[NSThread currentThread] isMainThread]) {
       NSLog(@"main");
   } else {
       NSLog(@"not main");
   }
   dispatch_async(dispatch_get_main_queue(), ^{
       //do your UI
   });
 
}
 
//发送消息的线程
- (void)sendNotification
{
   dispatch_queue_t defaultQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
   dispatch_async(defaultQueue, ^{
       [[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:nil];
   });
}

相关文章

  • NSNotificationCenter 的线程相关问题

    写在ViewController中的注册通知,在页面pop后会自动在通知中心移除自己;写在其他对象中的注册通知,释...

  • 线程问题相关

    2017.5.2 某些第三方回调函数不在主线程里面,不能修改主线程创建的控件的状态。需要回到主线程。

  • 线程相关问题

    常用并发多线程包 java.util.concurrent synchronized 可重入性 子类可以访问父...

  • iOS-Tips

    1:释放单例的方法 2:NSNotificationCenter 在哪个线程post则在哪个线程转发,不是add...

  • Android下多线程的实现

    Android下多线程相关 线程安全相关问题参考:java内存模型与线程 android下与多线程有关的主要有以下...

  • 多线程相关问题

    为什么不执行test方法 ?performSelector :withObject:afterDelay: 本质是...

  • java线程相关问题

    1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更...

  • 线程的面试相关问题

    一.什么是线程 线程是互相独立的,能够独立运行的子任务,并且每个线程都有自己运行的独立栈空间。所谓的多线程...

  • 22.iOS底层学习之多线程原理

    本篇提纲:1、线程与进程2、多线程3、多线程相关面试题4、线程安全问题5、线程与runloop的关系 线程与进程 ...

  • 多线程相关问题(一)

    由于近期在做知识储备,在做很多的复习,把之前看过的内容重温一遍真的像重新看一遍一样,真的是一入JAVA深似海。 概...

网友评论

      本文标题:NSNotificationCenter 的线程相关问题

      本文链接:https://www.haomeiwen.com/subject/vksjvttx.html