Не понимаю некоторые основы программирования на swift (инициализация, делегаты, протоколы, viewController)

swift

#21

К сожалению, нет. Вообще я маркетолог, и Swift – мой первый язык :slight_smile:


#22

#23

Спасибо, но я не из того типа людей, которые сразу задают вопрос, когда что-то не понимают :slight_smile:
Мне знаком и этот учебник, и курсы по свифту Евгения, и Александра Сенина, и Скутаренко.


#24

Ты на правильном пути)) Инициализатор - это та же функция, задача которой передать в экземпляр объекта инициализирующие значения. И поскольку Swift строго типизированный язык, то без этого никак, если нет этих значений, программа остановится. Все остальное это уже технические детали реализации.

Про протоколы напишу немного позже.

Небольшая поправка, ты написал - “названия свойств класса и его экземпляров совпадают”. На самом деле в твоем вышеприведенном примере и в целом на практике совпадают названия свойств класса и названия параметров инициализатора. А экземпляры класса могут называться как угодно, т.е. могут и совпадать, и не совпадать. Это уже как тебе удобно.


#25

Да, понимаю, просто не совсем правильно выразился. Большое тебе спасибо, Максим!


#26

You are welcome!))

Так вот насчет протоколов. Про них, как и про делегаты, как ты наверное тоже успел заметить, в разных книгах говорится также туманно. Вначале как бы понятно, что это какие-то требования, которые надо соблюдать. Но совсем непонятно, зачем они нужны, ведь те же методы можно реализовать и без них. Пока не попалась на глаза фраза, что с помощью протокола мы получаем доступ к функциональности другого объекта (класса, структуры). Я тогда как раз штудировал передачу данных между контролерами, так что фраза пришлась очень к месту.

В общем, получается так, что каждый объект, который мы создаем, наследуется в экземплярах. Но это вертикальное наследование. А что делать в том случае, когда хочешь использовать какие-то функции или свойства другого объекта? Например, у меня большой класс, в нем куча свойств и методов, но чего-то для какой-то определенной задачи не хватает. А это что-то есть в другом объекте, но который с первым никак не связан, потому что у них отдельные суперклассы. Вот тогда в дело вступает объект посредник - протокол, который определяет через какой метод или свойство эти два класса будут взаимодействовать между собой. А дальше уже надо набивать руку на конкретных реализациях, чтобы прочувствовать детали. В том смысле, что сам я еще не очень плотно освоил эту тему, поэтому пока такие вот общие соображения.


#27

Круть, спасибо!
Давно изучаешь свифт?)


#28

Welcome!

По срокам - я уже не интересуюсь марафонами)) Если что-то делать, значит нужно время. Кстати, у нас с тобой есть что-то похожее, я тоже пришел из продаж, маркетинга, рекламы.

В общем, если что, мы уже друг друга немного знаем. Будет с кем поговорить.