iOS Broadcast
3.31K subscribers
1.7K photos
84 videos
973 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
Use a Base Class or a Protocol In Swift? (3 мин)

Когда мы определяем протокол, можно определить лишь необходимое поведение объектов, что защищает нас ненужных возможностей, которые может иметь базовый класс

Так что же использовать?
Как это часто бывает, ответ: "it depends". Посмотрите на примеры и подумайте, что лучше подойдет в вашей ситуации. В Swift всего это будут протоколы 😄

#swift
👍1😁1
Создание анимаций для навигации в iOS

Можно использовать UIViewControllerAnimatedTransitioning для переходов в UINavigationController, для переходов посредством present и dismiss контроллеров, а даже для переходов между экранами UITabBarController
В статье подробно описан первый случай

#UI
🔥2👍1👎1
Introducing Ask Apple

Анонсирована серия консультация для разработчиков от экспертов из Apple. Первый раунд пройдет с 17 по 21 октября.
Участники смогут пообщаться с экспертами в Slack. Фокус будет на оптимизации под новые платформы и устройства, начиная от поддержки новых фичей, заканчивая миграцией на Swift и SwiftUI. Также в рамках "Office hours" можно будет запросить 25-минутную консультацию.

#Apple
👍3👎1
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
TouchLab представили KMMBridge - набор Gradle инструментов для помощи в публикации и использования pre-build KMM Xcode Framework бинарников

👉 Документация
👉 Исходный код на GitHub

#kmm #gradle
👍3
Developer guide on the iOS file system

В целях безопасности для записи и чтения файлов каждое iOS приложение имеет свою изолированную sandbox директорию. В качестве исключения доступны фото, музыка, контакты и некоторые другие данные.

Sandbox состоит из:
👉 Bundle Container Directory - содержит ресурсы приложения (доступ read-only)
👉 Data Container Directory, делится на:
- Documents: контент, сгенерированный пользователем
- Library - для хранения фалов приложения, которые не должны просочиться пользователю
- tmp - для временных файлов

#iOS
🔥3
Известность команд iOS разработки 2022

В опросе среди 900 iOS разработчиков узнали много интересного. Некоторые пойнты из исследования:
👉 57% респондентов работают в командах из 10 и более человек
👉 78.7% iOS разработчиков имеют высшее образование
👉 Джуны смотрят видео на YouTube, читают книги и проходят курсы. С переходом в мидлы фокус сдвигается на статьи и общение с коллегами. Синьорство прививает вкус к Твиттеру
и email-рассылкам. А тимлиды предпочитают ходить на конференции и чаще общаться с коллегами
👉 Наиболее привлекательные компании: Яндекс, Тинькофф и Авито

#оффтоп
👍4🤩1
Использование Apple Swift и SwiftUI в iOS 16

Занятные графики об использовании бинарников, UIKit и SwiftUI, языков программирования в iOS.
Принятие Swift продолжает экспоненциальный рост и в этом году язык превзошел C++. Точно так же SwiftUI начинает все больше использоваться самой Apple: количество двоичных файлов, использующих SwiftUI, удвоилось от iOS 15 к iOS 16. Apple использует собственные платформы — хороший знак для этих фреймворков.

#iOS
🔥4👎1
Алгоритмы сортировки в Swift

Каков наиболее эффективный способ отсортировать миллион 32-битных пользователей? Это частый вопрос на собеседовании в таких компаниях как Google.
В статье три популярных алгоритма сортировки с кодом на Swift и видеопримерами.

#swift
👍3👎2
Утройсво многопоточности в Swift

Для нас доступны следующие способы работы с потоками:
👉 pthread - самый низкий уровень, не рекомендуется к использованию
👉 NSThread - абстракция над pthread
👉 Grand Central Dispatch - высокоуровневое API, позволяющее создавать пользовательские очереди, управлять задачами в них, решать вопросы синхронизации и делать это максимально эффективно
👉 NSOperation - это по сути те же очереди, вместо DispatchQueue здесь OperationQueue, а вместо DispatchWorkItem — Operation

Подробнее о каждом из способов, а также о проблемах многопоточности в статье

#swift
🔥3👍1
The View Controller Hierarchy

Если вы забыли как строятся отношения между контроллерами внутри приложения, то эта статья от Apple поможет восполнить пробелы

Основные типы контроллеров:
👉 The Root View Controller - головной контроллер, с которого начинаются все флоу в приложении. Каждый UIWnidow имеет ровно один такой контроллер❗️
👉 Container View Controller - позволяет собирать сложные интерфейсы из более управляемых и многократно используемых частей. Например, UINavigationController
👉 Presented View Controllers - экран, открытый поверх другого

#navigation
🔥2👎1
6 YouTube channels that every iOS developer should subscribe

Очередной повод выучить или подтянуть английский:
👉 Paul Hudson - канал автора сайта Hacking with Swift с обучающими видео
👉 Darrel Root - обучающие видео по Swift
👉 iOS Conf SG - ежегодная конференция iOS разработчиков в Сингапуре
👉 CodeWithChris - самый большой канал с iOS туториалами на YouTube (из био канала)
👉 Lets Build That App - канал, где переписывают популярные приложения из AppStore
👉 Sean Allen - туториалы по iOS и оффтопные shorts

#education
🔥4👎1
Is Swift Combine Dead?

Есть мнение, что Combine умер, поскольку Apple представила Swift Concurrency, а Combine получает лишь минорные апдейты. Авторы статьи считают, что это не так, и у Combine есть плюсы:
👉 не пропустите обновления данных из-за того, что забыли присвоить где-то делегат
👉 легче оперировать над потоком данных (убирать дубликаты, объединять значения и т.д.)
👉 можно иметь больше одного подписчика

В чем Combine плох? В интеграции с другими решениями. Например, со Swift Concurrency. Но каждый инструмент хорош для своих задач. А в статье примеры для каких 🙂

#swift
👍3👎1
Исключения из принципа YAGNI

👉 Всё, что относится к правилу «ноль, один, бесконечность». Если в требованиях пункт «нам нужно сохранять адрес пользователя» превращается в «нам нужно сохранять два адреса», скорее всего лучше сразу обеспечить возможность сохранять много адресов
👉 Управление версиями. Не помешает заранее задуматься о том, как, допустим, система клиент – сервер будет распознавать разные версии и реагировать на них
👉 Логирование. Особенно в тех случаях, когда баги устраняются постфактум или в сложновоспроизводимых ситуациях
👉 Временные метки. Например, время создания или перехода в какое-либо состояние
👉 Реляционные базы данных. Большая часть данных реляционна по своей природе, поэтому нереляционная база – плохой выбор по умолчанию практически для любого приложения

#architecture
👍3👎2
iOS 16.1 Что нового? Apple выполняет обещания 25 октября

Основные обновления:
👉 Live Activity — интерактивные push-уведомления на экране блокировки.
👉 Можно удалить Apple кошелек 
👉 Индикатор процента заряда батареи
👉 Загрузка контента в приложении перед первым запуском приложений. Приложения смогут работать в фоновом режиме для загрузки контента еще до первого запуска
👉 Общая библиотека фотографий iCloud. Это отдельная медиатека, которой могут поделиться до пяти пользователей

#iOS
🔥3👍1👎1
iOS: Навигация по-новому

По мере развития SwiftUI основной компонент навигации NavigationView был заменен на NavigationStack.
В чем суть: теперь навигация становится возможной даже при помощи передачи пути для навигации. Те кто пользовался DeepLink или UniversalLink возрадуются. Теперь и на их улице будет праздник. 
Вся навигация сводится к передаче массива с условными названиями экранов в переменную пути. NavigarionStack пройдет все цепочку навигации автоматически, и покажет последний экран в цепочке.

#ui
👍8👎2
Protocol Oriented Programming in Swift (4 мин)

Плюсы использования протоколов:
👉 Типы могут соответствовать и получать поведение по умолчанию от более, чем одного протокола (в отличие от наследования)
👉 Протоколам могут соответствовать классы, структуры и перечисления, в то время как наследоваться могут только классы
👉 Протоколы позволяют реализовать retroactive modeling благодаря расширениям

Когда они полезны?
👉 Для написания юнит тестов. Вы можете с лёгкостью подменить реализацию
👉 Протоколы позволяют скрыть типы пользовательских сценариев от view controller'ов, либо от любых других объектов

#architecture
🔥4👎3