Block

特点

  1. Block是带有上下文和捕获的闭包。

  2. 使用Block可以让代码更简洁,尤其适用于异步操作和回调。

  3. 可以内联定义,使用起来非常灵活。

适用场景

  1. 适用于异步操作完成后的回调。

  2. 如网络请求、动画完成等。

  3. 适用于需要在同一作用域内完成的短期任务。

Delegate

特点

  1. Delegate模式使用协议来定义一组方法,由代理对象实现这些方法。

  2. 可以实现很好的解耦,将实现细节委托给其他对象。

  3. 一个对象通常只会有一个delegate,可以确保职责单一。

适用场景

  1. 适用于需要长期存在的关系,如UITableView、UICollectionView的数据源和委托。

  2. 适用于需要多个方法进行复杂交互的场景。

Notification

特点

  1. Notification是一种广播机制,可以让多个对象监听同一个事件。

  2. 通知发布者和监听者之间没有直接的依赖关系,非常松耦合。

  3. 通知是全局的,任何对象都可以发送和接收。

适用场景

  1. 适用于应用中的全局事件,如用户登录、注销等。

  2. 适用于需要多个对象响应同一事件的情况。

Block:适用于简洁、短期的回调和异步任务。

Delegate:适用于长期存在的关系和复杂交互。

Notification:适用于全局事件和多对象通信。