> Что такое селектор в iOS и как работает target-action? (iOS, Swift)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: MTS

Стек: iOS, Swift

> Пример ответа

Селектор (Selector) в iOS - это тип, представляющий имя метода в Objective-C, который может быть вызван динамически во время выполнения. В Swift селекторы используются с помощью #selector(MyClass.myMethod) и позволяют ссылаться на метод без его немедленного вызова.

Механизм target-action - это паттерн, при котором один объект (например, кнопка) отправляет сообщение (action) другому объекту (target) при наступлении события (например, нажатия). Работает так:

  1. Вы задаёте target (объект, который обработает событие) и action (селектор метода, который будет вызван).

  2. При наступлении события (например, UIControl.Event.touchUpInside) система вызывает objc_msgSend(target, action, sender).

  3. Метод target'а получает параметр sender - объект, инициировавший событие.

Пример в Swift:

SWIFT
button.addTarget(self, action: #selector(buttonTapped(_:)), for: .touchUpInside)
@objc func buttonTapped(_ sender: UIButton) {
print("Кнопка нажата")
}

Ключевые моменты:

  • Селектор - это просто имя метода, не привязанное к конкретной реализации.

  • Target-action обеспечивает слабую связанность: отправитель не знает, кто и как обработает событие.

  • В Swift методы, используемые в #selector, должны быть помечены @objc и быть доступны для Objective-C runtime.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью