Swift 面试题
目录

Swift 中如何实现代理模式?

· 约 4 分钟读完 · 第 175 / 196 章

推荐答案

在 Swift 中,代理模式通常通过定义协议(Protocol)和委托(Delegate)来实现。以下是一个简单的实现示例:

本题详细解读

1. 定义协议

首先,我们定义一个 TaskDelegate 协议,该协议包含两个方法:taskDidStart(_:) 和 taskDidFinish(_:)。这两个方法分别在任务开始和结束时被调用。

2. 定义委托类

接下来,我们定义一个 Task 类,该类包含一个 delegate 属性,类型为 TaskDelegate?。在 start() 方法中,我们调用 delegate 的 taskDidStart(_:) 和 taskDidFinish(_:) 方法。

3. 实现协议的类

然后,我们定义一个 TaskHandler 类,该类实现了 TaskDelegate 协议,并提供了 taskDidStart(_:) 和 taskDidFinish(_:) 方法的具体实现。

4. 使用代理模式

最后,我们创建一个 Task 实例和一个 TaskHandler 实例,并将 TaskHandler 实例赋值给 Task 实例的 delegate 属性。然后调用 start() 方法,触发代理方法的调用。

通过这种方式,我们实现了代理模式,使得 Task 类可以在特定事件发生时通知其代理对象。