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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
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
Подробности и обсуждение в комментариях 🙊
OCP: Open/Closed Principle in Swift (with code examples) — SOLID Principles

Компонент должен быть открыт для расширения и закрыт для модификации.

Чем полезен OCP?
👉 Защищает от лишних переопределений и дополнительных тестирований модулей
👉 Позволяет избежать новых ошибок, а также облегчает изменения бизнес-логики приложения, поскольку расширение не приведет к изменению других модулей.

В Swift соблюдению OCP помогают протоколы.

#architecture
🔥5
Продвинутый дебаг в Xcode: средства отладки, про которые часто забывают

👉 Swift Exception breakpoint — останавливает программу при срабатывании не перехваченного throw для Swift кода
👉 Symbolic breakpoint — срабатывает при исполнении кода, ассоциированного с некоторым идентификатором, который Apple называет символом
👉 OpenGL ES Error breakpoint — срабатывает при возникновении ошибки OpenGL при разработке соответствующих приложений
👉 Constraint Error breakpoint — срабатывает при возникновении ошибки автолейаута
👉 Test Failure breakpoint - может помочь при отладке тестов

#xcode
🔥3👎1
Какими средствами дебагинга в Xcode вы пользуетесь?
Anonymous Poll
80%
print
73%
breakponts (обычные)
29%
memory graph
50%
view hierarchy
32%
breakpoints (с опциями)
🔥4👎2
Собеседование наоборот: Авито, билайн, Домклик, Мегафон

Ответы на вопросы про составление резюме, системы грейдов, процессы, технологии и тренды от представителей крупных компаний

#карьера
👍4👎2
Как локализовать приложение

Большой гайд по локализации. Как перевести текст, фото, дату и валюты. Обзор инструментов и автоматизаций

#Xcode #tools
👍3👎1
Codeface: визуализация кодовой базы

Codeface позволяет:
👉 Просматривать иерархию кода
👉 Просматривать основные зависимости между структурными элементами на каждом уровне: папками, файлами и кодовыми символами
👉 Смотреть циклические зависимости и где они находятся
👉 Смотреть размер (строк кода) каждого структурного элемента
👉 Проверять scope на всех уровнях — от папок до свойств
👉 Фильтровать все визуализации по поисковому запросу
👉 Сохранять, открывать и делиться файлами кодовой базы
👉 Добавлять поддержку языков помимо Swift при наличие LSP-сервера

Ссылка в AppStore


#tools
👍7👎4
A New Approach to StateFul MVVM

StateFul MVVM добавляет новые сущности к MVVM - coordinator и state:
👉 Coordinator инкапсулирует логику навигации. Вместо push и present ViewController'ов друга, все в координаторе.
👉 State: Domain State Container ответственен за координацию других сущностей (например network service) для реализации бизнес логики и side effect'ов. Обычно он задает новое состояние как результат side effect'а.

Пример реализации в статье и GitHub

#architecture
👍2👎1🔥1
Рисуй, чтобы победить

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

#оффтоп
🔥4👎1
iOS: Simplifying Dependency Injection with the Facade Design Pattern

Как с умом сочетать паттерны Facade и Dependency Injection, чтобы получить силу обоих, читайте в статье. С помощью протоколов делим Facade на несколько типов, чтобы использовать в классах только нужное, а в тестах это мокировать.

#patterns
3👎2👍1
Swift Parallel Programming With PromiseKit (2 мин)

С помощью PromiseKit можно связать несколько вызовов в цепочку, что позволит написать более читаемый и компактный код, чем с помощью closures. Если по тем или иным причинам Combine вам не подходит, можно посмотреть в сторону PromiseKit

#concurrency
👍3👎3
Preparing for the Swift Interview (1.0) (3 мин)

Разбор некоторых популярных тем с собеседований:
👉 Protocols (множественное соответствие, наследование, расширения)
👉 Generics (функции, классы)
👉 Closures (параметры, trailing, (non-)escaping)

#interview
👍5👎3