大厂常问iOS面试题--NSNotification篇

主要内容包含如下:

  • 实现原理(结构设计、通知如何存储的、name&observer&SEL之间的关系等)
  • 通知的发送时同步的,还是异步的
  • NSNotificationCenter接受消息和发送消息是在一个线程里吗?如何异步发送消息
  • NSNotificationQueue是异步还是同步发送?在哪个线程响应
  • NSNotificationQueue和runloop的关系
  • 如何保证通知接收的线程在主线程
  • 页面销毁时不移除通知会崩溃吗
  • 多次添加同一个通知会是什么结果?多次移除通知呢
  • 下面的方式能接收到通知吗?为什么
1
2
3
4
// 发送通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNotification:) name:@"TestNotification" object:@1];
// 接收通知
[NSNotificationCenter.defaultCenter postNotificationName:@"TestNotification" object:nil];

在解释这些内容之前 强烈建议认真研读一下这篇 一文全解iOS通知机制(经典收藏)文章 了解一下大概 所有的问题就迎刃而解了.


阅读更多