IOS面试题(类相关) --- 通知Notification

OC面试题目合集地址

问题一: 代理, 通知, block区别是什么

通知
  • 使用观察者模式来实现用于跨层传递消息机制
  • 传递方式一对多
  • 没有回调
代理
  • 使用代理模式来实现传递
  • 传递方式一对一
  • 需要创建协议
  • 协议和实现是分开的,可读性差,可维护性高
  • 运行成本低, 消耗少
  • 可以回调
block
  • 本质是OC对象
  • 传递方式一对一
  • 比较简便,快捷,可读性好一些
  • 效率高 (block效率高是因为block是内联)
  • 运行成本高 (当block出栈时,会将使用的数据从栈内存拷贝到堆内存,对象引用计数+1,导致运行成本高)
  • 可以回调


问题二: 描述下通知一对多的流程

通知一对多的流程

发送者(代码实现是postnotification方法调用)经由通知中心广播给其他观察者



问题三: 通知的实现机制或者让你设计实现通知机制

通知机制
  • 通知中心内部维护一张通知表
  • 通知表以通知名称NotificationName做key, 以观察者集合Observer做value
  • Observer数组列表, 包含通知接收观察者, 回调方法等相关数据信息

你可能感兴趣的:(IOS面试题(类相关) --- 通知Notification)