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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
Лучшие техники ревью кода

👉 Создайте чек-лист для проверки кода
👉 Ограничьте количество строк кода для ревью за один раз. Это необходимо для того, чтобы обзор проходил с одинаковой эффективностью.
👉 Применяйте средства автоматизации. PVS-Studio (выявляет опечатки, мертвый код, потенциальные уязвимости), SonarQube (проверяет ошибки, соответствие стандартам кодирования, технический долг), AppRefactoring (выявляет дубликаты и пересечения фрагментов кода, предоставляя информацию для уникализации кода), Codacy (выявляет ошибки в коде, проблемы безопасности) и другие
👉 Дайте положительную обратную связь на кодревью

#процессы
👍7
How to write README file for the iOS project

Что должно быть в хорошем Readme?
👉 Название и предложение, коротко описывающее суть проекта
👉 Description - короткое описание проекта, цель и ключевые фичи
👉 Как запустить проект, включая все его зависимости и возможные проблемы
👉 Как использовать проект, документация и примеры
👉 Используемая архитектура и обоснование ее выбора
👉 Описание структуры проекта
👉 Как запустить тесты
👉 Как задеплоить проект, если есть такая возможность
👉 Менеджер зависимостей и как с ним работать, список библиотек с обоснованием их выбора
👉 Workflow: как заводить PR и репортить баги
👉 Тулза, использовавшаяся для дизайна
👉 Ссылка на доску с задачами и описание взаимодействия
👉 Ссылка на API и краткое описание работы с сетью

#documentation
👍12🔥1
Our 1 Mistake in iOS App Modularization That Slows our Xcode Build process

👉 Не всегда поможет замена MacBook на более мощную версию
👉 Проверяйте процесс сборки. Xcode 14 имеет встроенную функцию визуализации
👉 Иногда проблема медленной сборки более специфична для вашей кодовой базы или даже архитектурного уровня, как это произошло в случае из статьи (UIFramework - bottleneck)
👉 Всегда старайтесь сделать модульную структуру как можно более горизонтальной на каждом уровне, чтобы не создавать узких горлышек в процессе сборки

#build
👍4
KMM глазами iOS-разработчика

В KMM есть свои нюансы, которые описаны в статье. Но нет блокеров, которые заставили задуматься об отказе от KMM. Зато вот какие профиты для бизнеса были получены:
👉 Экономия времени разработки (зависит от проекта). 
Экономия будет больше, если в проектах много бизнес-логики находится на мобильном клиенте: офлайн-first решения
👉 Экономия времени переделок при изменении только бэкенда/логики без изменения UI — почти 50%
👉 Время погружения разработчиков iOS в KMM с 0 до реализации комплексных фичей — около 4 месяцев
👉 Bus factor — доработать KMM-логику могут не только iOS-разработчики, но и Android

#crossplatform
🔥6👍2👎1
Running tasks in parallel

Учимся запускать задачи параллельно с помощью old-school техник и фреймворков, а также новой structured concurrency API.
Складываем числа от 0 до миллиарда с 8 worker'ами с помощью:
👉 concurrentPerform 
👉 operation queues
👉 structured concurrency
👉 task groups

#swift
🔥7👎1🤩1
Что нового в Swift 5.7: Regex (4 мин)

Swift Regex очень удобен благодаря таким фичам, как билдеры или уже готовые парсеры. Способы использования:
👉 Regex-литералы. Нам больше не нужно использовать двойные escape-символы и беспокоиться о do-catch, как при работе с NSRegularExpression
👉 Run-time конструкции. Эта фича может очень пригодиться для полей поиска в редакторах или консольных утилит
👉 Regex-билдеры - структурированная форма написания регулярных выражений, доступная в Swift

На скринах примеры этих способов. В комментариях прикреплю демонстрацию преобразования Regex в Xcode

#swift
👍6👎1
20 уроков, которые я вынес из 20 лет работы программистом

И вот некоторые из них:
👉 Я до сих пор многого не знаю.Чем быстрее вы придете к этой мысли, тем скорее сумеете выбраться из синдрома самозванца и начнете находить радость в самообразовании и обучении других
👉 Лучший код – это отсутствие кода или хотя бы необходимости его поддерживать
👉 ПО – это не конечная цель, а способ ее достижения
👉 В конечном счете, любая система – отстой, смиритесь
👉 Нам нужно меньше искать 10x-программистов и больше избегать 0.1x-программистов
👉 Не путайте скромность с невежеством. Разговаривайте с окружающими, просите у них совета и обратной связи. Вы об этом не пожалеете

#softskills
👍15👎1
Подборка видео на выходные 😎

📺 After 13 months of building a Website, I switched to an App (7 мин)
📺 Better Swift Closures Explained – Swift Tips (2023) – iOS (6 мин)
📺 📱Заработок на мобильных приложениях iOS и Android! Как делать 30 000$ в месяц?💰 (66 мин)
📺 Как создать кликер в Xcode | SwiftUI (3 мин)

В комментариях делитесь видео по разработке, которые понравились вам и будут полезны другим

#подборкавидео
🔥3👍1👎1
Парсинг ответов на BLE-команды на языке Swift на примере GoPro

Общий алгоритм работы с BLE-ответом: 
1️⃣ Получаем ответ от Bluetooth‑устройства
2️⃣ Если ответ простой, то получаем результат. Иначе проверяем, сколько в нем пакетов
3️⃣ Если один, сохраняем полезные данные
4️⃣ Иначе по маске определяем, сколько полезных байт должно прийти в ответ на данную команду, с какого байта они начинаются, и сохраняем их
5️⃣ Повторяем, пока не получим нужно количество байт
6️⃣ Затем приступаем к его парсингу
7️⃣ Нужно разделить общий ответ на отдельные ответы на каждую команду
8️⃣ На выходе получаем готовый словарь с id настройки (или статуса) в виде ключа и текущим состоянием этой настройки (или статуса) в виде значения

#bluetooth
👍6😱2👎1
Эволюция архитектуры приложения Facebook для iOS

Facebook для iOS (FBiOS) — старейшая мобильная кодовая база в Meta. После многих лет изменений она не похожа на типичную кодовую базу iOS:
👉 Она полна C++, Objective-C(++) и Swift
👉 Имеет десятки динамически загружаемых библиотек (dylib) и так много классов, что их невозможно загрузить в Xcode сразу
👉 Apple SDK практически не используется в чистом виде — все было обернуто или заменено собственной абстракцией
👉 В приложении активно используется генерация кода с помощью Buck - кастомной системы сборки
👉 Без интенсивного кэширования собственной системой сборки пришлось бы провести целый рабочий день в ожидании сборки приложения
Подробнее об этапах эволюции - в статье.

#architecture
😱4👎2👍1
В iOS и iPadOS 16.4 появятся веб пуш-уведомления

Согласно новому сообщению в блоге WebKit, бета-версии iOS и iPadOS 16.4 от Apple позволят веб-приложениям Safari на домашнем экране отправлять push-уведомления.
Уведомления от веб-приложений работают точно так же, как уведомления от других приложений. Они отображаются на экране блокировки, в Центре уведомлений и на сопряженных Apple Watch.

#ios
👍9😢4
Swift Regex Tutorial: Getting Started

Недавно был пост Regex в Swift 5.7. А вот и туториал по данной теме на английском языке:
👉 Что такое регулярки в целом
👉 Как изменилась работа с ними в Swift 5.7
👉 Как захватывать части строк, которые вы ищете
👉 Как использовать RegexBuilder, чтобы собирать сложные регулярки, которые легко понимать
👉 Как загрузить плохо отформатированный текстовый файл в модель
👉 Как обрабатывать несостыковки в данных

#swift #tutorial
👍5
Live coding интервью для iOS разработчиков (11 мин)

Разбор наиболее популярных задач, которые вы можете встретить на live coding этапе. Время, затраченное на решение таких задач, не должно превышать 30 минут, а их количество, обычно, ограничивается 1–2 задачами за одно интервью. В статье задачи на следующие темы:
👉 Thread-safe class
👉 DispatchGroup
👉 High-order functions
👉 Type erasure
👉 Any and Some

#interview
👍15👎1