Как отследить изменения в другом классе?


#1

Ниже приведен простой образец кода, чтобы легче было понять, что нужно сделать.

class Data {
    var data: [Int] = [] {
        didSet {
            print("changed")
        }
    }
}

class Process {
    var data: Data
    
    init(data: Data) {
        self.data = data
    }
    
    func processIfChanged() {
        //как вызвать эту функцию, если переменная data была изменена?
    }
}

class Global {
    var data: [Data] = []
    var process: [Process] = []
}

let global = Global()
global.data = [Data()]
global.process = [Process(data: global.data.first!)]

global.data.first!.data.append(1)
global.data.first!.data.append(5)

#2
protocol ChangeDelegate: AnyObject {
    func processIfChanged()
}

class Data {
    weak var deleage: ChangeDelegate?
    var data: [Int] = [] {
        didSet { deleage?.processIfChanged() }
    }
}

class Process: ChangeDelegate {
    var data: Data
    
    init(data: Data) {
        self.data = data
        self.data.deleage = self
    }
    
    func processIfChanged() {
        print("changed")
    }
}

class Global {
    var data: [Data] = []
    var process: [Process] = []
}

let global = Global()
global.data = [Data()]
global.process = [Process(data: global.data.first!)]

global.data.first!.data.append(1)
global.data.first!.data.append(5)