简述Object-C什么时候用Delegate,什么时候用Notification?
参考答案:
在Objective-C中,Delegate(代理)和Notification(通知)是两种常见的通信机制,它们各自适用于不同的场景。
Delegate(代理):
- 需要返回值:当需要从一个对象获取数据或执行某些操作,并希望获取结果或反馈时,适合使用代理。代理模式允许一个对象(代理)代表另一个对象(委托人)执行某些任务,并能返回结果或状态给委托人。
- 一对一通信:如果需要在两个对象之间建立紧密的、一对一的通信关系,代理是一个很好的选择。它允许委托对象将特定的任务或消息直接发送给其代理对象,确保任务或消息的准确执行。
- 明确性:代理模式提供了明确的协议(protocol),定义了代理需要实现的方法和任务。这使得代码更易于理解和维护,因为每个对象都知道它的代理应该做什么。
Notification(通知):
- 一对多通信:当需要在一个对象发出的通知下,多个对象能进行响应时,应使用通知。通知机制允许一个对象广播一个消息或事件,然后任何感兴趣的对象都可以监听这个通知并作出相应的处理。
- 解耦:通知有助于降低对象之间的耦合度。发送通知的对象不需要知道哪些对象会接收或处理这个通知,这使得代码更加灵活和可扩展。
- 异步操作:通知机制非常适合用于异步操作,因为发送通知的对象可以在发送通知后立即继续执行其他任务,而不需要等待接收通知的对象处理完通知。
总结来说,当需要在两个对象之间建立紧密、一对一的通信关系,并希望获取返回值时,适合使用代理。而当需要在多个对象之间广播消息或事件,并希望降低对象之间的耦合度时,应使用通知。在实际开发中,可以根据具体需求和场景来选择合适的通信机制。