Можно ли добавлять новые свойства к объекту через расширение его типа?

В iOS (Swift) расширения (extensions) позволяют добавлять новые методы, вычисляемые свойства и инициализаторы к существующим типам, но нельзя добавлять новые хранимые свойства.

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

Что ответить на собеседовании

В iOS (Swift) расширения (extensions) позволяют добавлять новые методы, вычисляемые свойства и инициализаторы к существующим типам, но нельзя добавлять новые хранимые свойства.

Подробный разбор

Ответ с пояснениями

В iOS (Swift) расширения (extensions) позволяют добавлять новые методы, вычисляемые свойства и инициализаторы к существующим типам, но нельзя добавлять новые хранимые свойства.

Это связано с тем, что расширения не могут изменять внутреннюю структуру объекта, а только расширять его функциональность.

Если нужно добавить новое свойство, обычно используют:

  • вычисляемые свойства в расширении (без хранения значения)
  • ассоциированные объекты (в Objective-C runtime) для хранения данных

Пример вычисляемого свойства в расширении:

extension String {
    var reversedString: String {
        return String(self.reversed())
    }
}

let s = "hello"
print(s.reversedString) // "olleh"

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее