Усов В. Swift. Основы разработки приложений под iOS и macOSКниги по IT. (30,9 МБ, pdf) В издании содержится подробное описание языка Swift для всех, кто хочет научиться на нем программировать и создавать свои iOS-приложения или программы для Linux.

 

 

 

 

Содержание
Введение 9
О Swift 10
О книге 12
Исправления в третьем издании 13
Для кого написана книга 14
Что нужно знать, прежде чем начать читать 15
Структура книги 15
Условные обозначения 16
Часть I. Подготовка к разработке Swift-приложений 17
Глава 1. Подготовка к разработке в macOS 18
1.1. Вам необходим компьютер Mac 18
1.2. Зарегистрируйтесь как Apple-разработчик 18
1.3. Установите Xcode 20
1.4. Введение в Хcode 21
1.5. Интерфейс playground-проекта 25
1.6. Возможности playground-проекта 26
Глава 2. Подготовка к разработке в Linux 30
Часть II. Базовые возможности Swift 34
Глава 3. Отправная точка 35
3.1. Инициализация и изменение значения 36
3.2. Переменные и константы 39
3.3. Правила объявления переменных и констант 42
3.4. Глобальные и локальные объекты 43
3.5. Вывод текстовой информации 44
3.6. Комментарии 47
3.7. Точка с запятой 51
Глава 4. Типы данных и операции с ними 52
4.1. Виды определения типа данных 52
4.2. Числовые типы данных 55
4.3. Текстовые типы данных 69
4.4. Логические значения 75
4.5. Псевдонимы типов 78
4.6. Операторы сравнения 80
4.7. Операторы диапазона 81
Часть III. Основные средства Swift 82
Глава 5. Кортежи 83
5.1. Основные сведения о кортежах 83
5.2. Взаимодействие с элементами кортежа 85
Глава 6. Опциональные типы данных 91
6.1. Опционалы 91
6.2. Извлечение опционального значения 93
Глава 7. Операторы условий 96
7.1. Утверждения 96
7.2. Оператор условия if 98
7.3. Оператор раннего выхода guard 110
7.4. Оператор ветвления switch 110
Глава 8. Коллекции 121
8.1. Массивы 121
8.2. Наборы 134
8.3. Словари 143
Глава 9. Циклы 149
9.1. Оператор повторения for 149
9.2. Операторы повторения while и repeat while 155
9.3. Управление циклами 156
Глава 10. Функции 160
10.1. Объявление функций 160
10.2. Аргументы функции и возвращаемое значение 163
10.3. Возможности функций 171
10.4. Безымянные функции 178
Глава 11. Замыкания 180
11.1. Функции как замыкания 180
11.2. Замыкающие выражения 182
11.3. Неявное возвращение значения 184
11.4. Сокращенные имена параметров 185
11.5. Переменные-замыкания 186
11.6. Метод сортировки массивов 187
11.7. Каррирование функций 189
11.8. Захват переменных 190
11.9. Замыкания — это тип-ссылка 193
11.10. Автозамыкания 194
11.11. Выходящие замыкания 196
Глава 12. Вспомогательные функциональные элементы 199
12.1 Метод map(_:) 199
12.2 Метод filter(_:) 202
12.3 Метод reduce(_:_:) 203
12.4 Метод flatMap(_:) 204
Глава 13. Ленивые вычисления 205
13.1. Понятие ленивых вычислений 205
13.2. Замыкания в ленивых вычислениях 206
13.3. Свойство lazy 207
Часть IV. Нетривиальные возможности Swift 208
Глава 14. ООП как фундамент 210
14.1. Экземпляры 210
14.2. Пространства имен 212
14.3. API Design Guidelines 213
Глава 15. Перечисления 215
15.1. Синтаксис перечислений 215
15.2. Ассоциированные параметры 218
15.3. Вложенные перечисления 220
15.4. Оператор switch для перечислений 221
15.5. Связанные значения членов перечисления 222
15.6. Свойства в перечислениях 225
15.7. Методы в перечислениях 226
15.8. Оператор self 227
15.9. Рекурсивные перечисления 228
Глава 16. Структуры 232
16.1. Синтаксис объявления структур 232
16.2. Свойства в структурах 233
16.3. Структура как пространство имен 235
16.4. Собственные инициализаторы 236
16.5. Методы в структурах 238
Глава 17. Классы 240
17.1. Синтаксис классов 241
17.2. Свойства классов 241
17.3. Методы классов 244
17.4. Инициализаторы классов 245
17.5. Вложенные типы 246
Глава 18. Свойства 248
18.1. Типы свойств 248
18.2. Контроль получения и установки значений 251
18.3. Свойства типа 254
Глава 19. Сабскрипты 257
19.1. Назначение сабскриптов 257
19.2. Синтаксис сабскриптов 258
Глава 20. Наследование 263
20.1. Синтаксис наследования 263
20.2. Переопределение наследуемых элементов 265
20.3. Превентивный модификатор final 268
20.4. Подмена экземпляров классов 269
20.5. Приведение типов 269
Глава 21. Псевдонимы Any и AnyObject 272
21.1. Псевдоним Any 272
21.2. Псевдоним AnyObject 274
Глава 22. Инициализаторы и деинициализаторы 275
22.1. Инициализаторы 275
22.2. Деинициализаторы 281
Глава 23. Удаление экземпляров и ARC 283
23.1. Уничтожение экземпляров 283
23.2. Утечки памяти 285
23.3. Автоматический подсчет ссылок 287
Глава 24. Опциональные цепочки 290
24.1. Доступ к свойствам через опциональные цепочки 290
24.2. Установка значений через опциональные цепочки 292
24.3. Доступ к методам через опциональные цепочки 293
Глава 25. Расширения 294
25.1. Вычисляемые свойства в расширениях 295
25.2. Инициализаторы в расширениях 296
25.3. Методы в расширениях 297
25.4. Сабскрипты в расширениях 298
Глава 26. Протоколы 299
26.1. Требуемые свойства 300
26.2. Требуемые методы 301
26.3. Требуемые инициализаторы 302
26.4. Протокол в качестве типа данных 303
26.5. Расширение и протоколы 303
26.6. Наследование протоколов 304
26.7. Классовые протоколы 305
26.8. Композиция протоколов 306
Глава 27. Разработка первого приложения 307
27.1. Важность работы с документацией 307
27.2. Модули 314
27.3. Разграничение доступа 318
27.4. Разработка интерактивного приложения 321
Глава 28. Универсальные шаблоны 335
28.1. Универсальные функции 335
28.2. Универсальные типы 337
28.3. Ограничения типа 339
28.4. Расширения универсального типа 340
28.5. Связанные типы 340
Глава 29. Обработка ошибок 343
29.1. Выбрасывание ошибок 343
29.2. Обработка ошибок 344
29.3. Отложенные действия по очистке 349
Глава 30. Нетривиальное использование операторов 350
30.1. Операторные функции 350
30.2. Пользовательские операторы 353
Заключение 354
Приложение. Изменения и нововведения Swift 3.0 355
Ассистент миграции 355
API Design Guidelines 355
Изменения в функциях 359
Удалены операторы инкремента и декремента 363
Удалена классическая форма цикла for 363
Доступ к типу 363
Добавлена ленивая реализация flatMap(_:) для последовательности из опционалов 364
Тип Unmanaged использует UnsafePointer 365
Тестирование 365
Изменены модификаторы области видимости 365
Добавлен метод first(where:) для типа Sequence 366
Импорт констант Objective-C в виде типов данных 366
Точка перед членом перечисления 366
Уточнено взаимодействие комментариев и операторов 367
Параметры атрибутов через точку 367
Объявление параметров в конструкции switch-case 367
Уведомления о неиспользовании результатов работы функции 368
Универсальные псевдонимы типов 368
Изменения в композиции протоколов 368