Позднее связывание

protocol  IPC {
    func restart()
}

class MacBookIPC {
    var name: String = "123"
    var date: Date?

    func restart() {}
}

let macBook = MacBook()
let mirror = Mirror(reflecting: macBook)

//show fields
for child in mirror.children {
    let fieldName = child.label
    let value: Any = child.value
    print("\(fieldName!): \(value)")
}