Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про IOS: viper, presenter

Как связаны View и Presenter в VIPER?

Вопрос проверяет понимание ключевого взаимодействия слоёв и управления памятью в VIPER

Короткий ответ

View и Presenter в VIPER связаны через протоколы. View хранит сильную ссылку на Presenter, а Presenter — слабую ссылку на View. View передаёт пользовательские события Presenter. Presenter обрабатывает их и обновляет View через интерфейс. Такая схема предотвращает retain cycle и делает код тестируемым.

Длинный ответ

Связь View и Presenter — один из самых важных аспектов VIPER.

Общий принцип

Перед тем как рассматривать детали, важно понять роли:

  • View — отображение и события

  • Presenter — координация логики и UI

Протокольное взаимодействие

View реализует интерфейс:

protocol UserViewInput: AnyObject {
    func show(name: String)
}

Presenter хранит ссылку:

class UserPresenter {
    weak var view: UserViewInput?
}

Поток взаимодействия

Типичный сценарий выглядит так:

  1. Пользователь совершает действие

  2. View сообщает Presenter

  3. Presenter вызывает Interactor

  4. Presenter получает результат

  5. Presenter обновляет View

Почему Presenter хранит weak ссылку

Presenter хранит weak ссылку на View, потому что:

  • View владеет Presenter

  • View — UI-объект с собственным жизненным циклом

  • strong-ссылка привела бы к retain cycle

Почему View хранит strong ссылку

View хранит strong ссылку на Presenter, потому что:

  • Presenter является частью экрана

  • Presenter должен жить столько же, сколько View

Тестируемость

Благодаря такой связи:

  • Presenter можно тестировать без View

  • View можно подменять моками

  • логика изолирована от UIKit

Вывод

Связь View и Presenter в VIPER строится на протоколах и слабых ссылках. Это обеспечивает контроль жизненного цикла, отсутствие retain cycle и хорошую тестируемость.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • IOS

    IOS

Ключевые слова

#viper

#presenter

Подпишись на iOS Developer в телеграм