教程 swift tutorial

委托模式(Delegate)

委托模式是一种设计模式,通过协议定义回调接口,实现对象间的通信和行为定制。

定义委托协议

先定义一个协议,声明委托方法:

swift
protocol TaskDelegate: AnyObject {
    func taskDidFinish()
}

`

使用 AnyObject 限制协议只能被类遵循,方便弱引用避免循环引用。

实现委托协议

被委托类实现协议:

swift
class Worker {
    weak var delegate: TaskDelegate?

    func startTask() {
        print("任务开始")
        // 任务执行完毕,通知委托
        delegate?.taskDidFinish()
    }
}

委托者遵循协议

委托者实现协议方法:

swift
class Manager: TaskDelegate {
    func taskDidFinish() {
        print("任务完成,收到通知")
    }
}

let manager = Manager()
let worker = Worker()
worker.delegate = manager
worker.startTask()
// 输出:
// 任务开始
// 任务完成,收到通知

委托模式解耦发送者和接收者,提高代码灵活性和可维护性。