K
UIKit
protocol WorkerDelegate: AnyObject {
func workerDelegateDidGenerateValue(_ value: Int, after delay: Int)
}
class Worker {
weak
var delegate: WorkerDelegate?
func generateValue() {
let delay = Int.random(in: 1...5)
DispatchQueue.global().asyncAfter(deadline: .now() + .seconds(delay)) {
let value = Int.random(in: 0...10)
self.delegate?.workerDelegateDidGenerateValue(value, after: delay)
}
}
}
class ViewController: UIViewController, WorkerDelegate {
let worker = Worker()
override
func viewDidLoad() {
super.viewDidLoad()
worker.delegate =
self
worker.generateValue()
}
func workerDelegateDidGenerateValue(_ value: Int, after delay: Int) {
print("Get \(value) after \(delay) seconds")
}
}