delegate简单实现

delegate允许类或者结构体将需要它们负责的功能代理给其他类型的实例。代理模式能够用来响应特定的动作,或者结构外部数据源提供的数据,且不需要关心外部数据源的类型。
下面是实现一个简单代理的代码:

  • 定义proto
protocol TestDelegate: class {
    func line() -> Int
    func row() -> Int
}
  • 定义class,在class中定义一个TestDelegate类型变量
class DelegateTestClass {
    var delegate: TestDelegate? {
        didSet {
            self.printLineAndRow()
        }
    }
    
    func printLineAndRow() {
        let index = (delegate?.line(), delegate?.row())
        print(index)
    }
}
  • 定义class,遵循TestDelegate
class TestClass: UIViewController, TestDelegate {
    var delegateTestClass = DelegateTestClass()
    
    override func viewDidLoad() {
        delegateTestClass.delegate = self
    }
    
    func line() -> Int {
        return 1
    }
    
    func row() -> Int {
        return 2
    }
}

运行程序,控制台打印出下面信息:

delegate简单实现_第1张图片
output.png

你可能感兴趣的:(delegate简单实现)