Ты делаешь код-ревью в компании, которая разрабатывает приложение социальной сети со сложной архитектурой ленты. Младший разработчик отправил PR, который добавляет новую view model и паттерн слушателя уведомлений. Во время ревью ты заметил следующий код и отметил его для обсуждения:
class FeedViewModel {
var onUpdate: (() -> Void)?
func startListening() {
NotificationCenter.default.addObserver(
forName: .newPostAvailable,
object: nil,
queue: .main
) { _ in
self.onUpdate?()
}
}
}
class FeedViewController: UIViewController {
let viewModel = FeedViewModel()
override func viewDidLoad() {
super.viewDidLoad()
viewModel.onUpdate = {
self.refreshUI()
}
viewModel.startListening()
}
}