Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : observer, pattern

Как можно реализовать паттерн Observer базовыми средствами Swift?

Вопрос проверяет знание языка Swift и умение реализовывать поведенческие паттерны без сторонних фреймворков.

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

Паттерн Observer в Swift можно реализовать с помощью протоколов, замыканий или NotificationCenter. Observable хранит список подписчиков и уведомляет их при изменениях. Observer реализует протокол или передаёт замыкание. Такой подход не требует дополнительных библиотек. Выбор способа зависит от требований к связанности и жизненному циклу.

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

В Swift есть несколько базовых способов реализовать Observer.

Реализация через протоколы

Этот способ максимально приближен к классическому паттерну.

protocol Observer: AnyObject {
    func didUpdate(value: Int)
}

Observable хранит слабые ссылки на подписчиков:

class Observable {
    private var observers = [Observer]()

    func add(observer: Observer) {
        observers.append(observer)
    }

    func notify(value: Int) {
        observers.forEach { $0.didUpdate(value: value) }
    }
}

Реализация через замыкания

Подходит для простых сценариев.

class Observable {
    var onChange: ((Int) -> Void)?

    func update(value: Int) {
        onChange?(value)
    }
}

Выбор подхода

  • протоколы — для сложных сценариев

  • замыкания — для простых связей

  • NotificationCenter — для широковещательных событий

Вывод

Swift предоставляет гибкие инструменты для реализации Observer без внешних зависимостей. Главное — контролировать жизненный цикл подписчиков.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Swift

    Swift

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

#observer

#pattern

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

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.