DevPrep

Все темы › Задачи с реальных собеседований

Рефакторинг: найди реальную утечку, а не ставь weak self по инерции

Senior PRO

Задача

Что не так с этим контроллером? Найди утечки и ошибки, объясни, где [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

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store