宽窄优行-由【嘉易行】项目成品而来
younger_times
2023-04-06 a1ae6802080a22e6e6ce6d0935e95facb1daca5c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//
//  Delegate.swift
//  OKProject
//
//  Created by alvin_y on 2019/12/7.
//  Copyright © 2019 yangwang. All rights reserved.
//
 
import Foundation
 
class Delegate<Input, Output> {
    
    private var block: ((Input) -> Output?)?
    
    func delegate<T: AnyObject>(on target: T, block: ((T, Input) -> Output)?) {
        self.block = { [weak target] input in
            guard let target = target else { return nil }
            return block?(target, input)
        }
    }
    
    func call(_ input: Input) -> Output? {
        return block?(input)
    }
}
 
extension Delegate where Input == Void {
    
    func call() -> Output? {
        return call(())
    }
}