Рефакторинг: найди реальную утечку, а не ставь weak self по инерции
Задача
Что не так с этим контроллером? Найди утечки и ошибки, объясни, где [weak self] нужен, а где нет.
final class FeedViewController: UIViewController {
private let service = FeedService()
private var timer: Timer?
private var items: [Item] = []
private let tableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
service.onUpdate = { items in
self.items = items
self.tableView.reloadData()
}
timer = Timer.scheduledTimer(withTimeInterval: 30, repeats: true) { [weak self] _ in
self?.service.refresh()
}
service.load { [weak self] result in
guard let self else { return }
if case .success(let items) = result {
self.items = items
self.tableView.reloadData()
}
}
}
}
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep