Мобильная разработка за неделю #498 (17 — 23 июля)
В нашем Telegram-канале Mobile Insights, еще больше материалов для мобильных разработчиков, а в IT Insights — об интересном коде и технологиях. Подключайтесь!

Мобильная ОС компании Apple
Данная статья - моя попытка разобраться и объяснить архитектурный паттерн MVP with Router.
Про сам паттерн MVP в на просторах интернета можно найти довольно много информации, например по следующей ссылкам:
Архитектурные паттерны в iOS: страх и ненависть в диаграммах. MV(X)
А вот про разновидность данного паттерна, которая решает проблему сборки, возникающую при использовании MVP информации не так уж и много. Давайте попробуем разобраться что такое Router применительно к паттерну MVP, зачем он нужен и как его использовать.
В этой публикации попробуем понять, как и где Xcode хранит свои логи, что такое SLF0 и как все это читать, а может быть даже понять, и лучше без IDE, так интереснее.
Всем привет от мобильной платформы компании "Тензор"! Меня зовут Галина и в этой статье я хочу поделиться историей развития нашего Share Extension и рассказать о том, как он превратился в отдельный модуль, конфигурируемый за счёт подключенных внешних зависимостей.
Не смотря на то, что на просторах интернета легко можно найти сотни гайдов по созданию Share Extension, вам нужно понимать, что большинство из этих инструкций актуальны только для самых простых и тривиальных задач. Создание чего-либо более сложного, наполненного нелинейной бизнес логикой, принесет вам массу интересных часов дебаггинга и поиска ответов в интернете. Надеюсь, что данная статья станет одним из таких ответов или вдохновит кого-нибудь на переработку существующей реализации :)
Тестирование занимает важное место в iOS-разработке — без него нельзя гарантировать стабильность работы приложения в продакшене и оперативно выявлять возникающие баги. Но для части iOS-разработчиков тема тестов по-прежнему остается запутанной и сложной для понимания. Исправляем ситуацию.
Меня зовут Евгений Плёнкин. Я iOS разработчик компании СберЗдоровье. В предыдущем материале я рассказал об автоматизированном тестировании, кому оно нужно, месте модульных тестов в пирамиде тестирования и основном инструменте тестирования для iOS-разработчиков. Сегодня материал будет посвящен «чистым» тестам и видам имитирующих объектов, подменяющие реальные на время теста.
Приступим.
Статья написана в рамках серии «Модульное тестирование в iOS: всё, что надо знать».
Привет! Меня зовут Альберт, я занимаюсь iOS-разработкой в компании SimbirSoft! Хочу поделиться инструментами для дебаггинга iOS-приложений, которые юзаю лично сам. Любой разработчик наверняка знает, что создание высококачественного приложения требует не только написания кода. Одна из важнейших составляющих достижения успеха в этом деле — эффективная отладка. К счастью, существует множество инструментов, которые помогут быстро и эффективно диагностировать, а также устранять проблемы. В этой статье мы подробно рассмотрим нативные и сторонние инструменты, доступные для отладки iOS-приложений, как использовать эти инструменты для диагностики и устранения распространенных проблем. Если интересно, тогда ныряйте под кат.
Apple представила концепцию async/await в Swift 5.5 и анонсировала ее на сессии WWDC21. Сегодня мы увидим async/await в действии и то, как мы можем использовать async/await для написания удобочитаемого асинхронного кода в своем приложении.
Принципы SOLID — это набор пяти основных принципов, которые помогают разработчикам создавать более понятный, гибкий и поддерживаемый код. Так же знание этих принципов довольно часто спрашивают на собеседованиях.
Давайте рассмотрим каждый из этих принципов с примерами нарушения и соблюдения на языке Swift.
Привет! С вами Виктор 👺, тэнгу‑хранитель одной из дизайн‑систем Ozon.
В июне 2023 года Figma выкатила мощное обновление, во многом ориентированное на разработчиков. Точнее на поиск общего языка между проектировщиком и программистом. Я давно занимаюсь дизайн‑системами и знаю как тесно связан дизайн и код. Насколько взаимопонимание между дизайнером и разработчиком ускоряет доставку продукта до пользователя.
Однако, кое‑где у нас порой, отношения дизайнера и разраба токсичны и контрпродуктивны. Связано это, как всегда, с непониманием. Разный взгляд, незнакомый язык, непохожие ценности. Кроме вариантов решения продуктовой задачи, дизайнер видит ритм отступов, гармонию сочетания цветов, всякие золотые сечения и правила внутреннего и внешнего. Ну, должен видеть. А разработчик смотрит на сложность реализации, на переиспользуемость компонентов, отображение на разных размерах экрана, поведение при переполнении или отсутствии данных.
Помогут ли новые фишки Figma наладить общение?
Один из самых неприятных аспектов iOS‑разработки — это локализация и плюрализация строк. Мало того, что они разбиты на разные файлы: strings
и stringsdict
, так ещё и работа с этими файлами для начинающего разработчика может оказаться не сильно очевидной. «Что такое %#@VARIABLE@
?», «Как добавлять несколько плюралок в одну строку?», «Как использовать плюралки в локализованных строках?», «Как добавлять разные переводы для разных девайсов?» — Все эти вопросы рано или поздно возникают у разработчика. После получения ответов на них каждый задаётся вопросом: «А почему всё так плохо?»
Привет из Google I/O 2023. Сегодня, в прямом эфире из Маунтин-Вью, мы объявляем о выпуске Dart 3 - самого крупного релиза Dart на сегодняшний день! Dart 3 содержит три основных усовершенствования. Во-первых, мы завершили путь к 100% надёжная null безопасности. Во-вторых, мы добавили новые возможности языка для записей, шаблонов и модификаторов классов. В-третьих, мы заглядываем в будущее, где мы расширим поддержку наших платформ, добавив нативный код для веб с помощью Wasm-компиляции. Давайте разберемся во всём в деталях.
История о том, как я раздебажил системные фреймворки iOS, чтобы понять, как слушать события физического переключения Silent Mode на iPhone, не используя приватное API. Никаких dlsym
, NSClassFromString
, objc_msgSend
.
Всем привет! Меня зовут Никита Тархов, я iOS‑разработчик студии CleverPumpkin. Сегодня поговорим про макросы: что это такое, зачем нужны и где они применяются.
Хотя Swift 6 уже не за горами, Apple продолжает добавлять новые и улучшенные функции в текущую версию Swift 5.x.
Swift 5.9 - это новый большой релиз, который включает в себя ряд улучшений и новых функций. К ним относятся упрощенные способы работы с операторами if
и switch
, макросы (то есть код, который может генерировать или трансформировать другой код), некопируемые типы (это новая функция, которая предотвращает копирование объектов определенного типа), кастомные исполнители акторов (что связано с моделью конкурентного программирования в Swift) и многое другое.
В этой статье разберем самые важные изменения этого релиза с примерами кода и пояснениями. Для воспроизведения приведенных в этой статье примеров вам понадобиться последняя версия Xcode 14 или Xcode 15 beta.
Макрос #Preview
в языке Swift предоставляет удобный способ создания и предварительного просмотра компонентов пользовательского интерфейса. Он позволяет разработчикам быстро и легко создавать превью для своих View, чтобы визуально оценить, как они выглядят и взаимодействуют.
Сейчас доступно много информации о том, как писать макросы, много примеров и на удивление хорошая документация. Сегодня мы будем не создавать свой макрос, а подробно рассмотрим приватные макросы, предоставляемые Apple, а именно #Preview
.
Server Driven UI в Альфа Банке — это низкоуровневый и гибкий подход для реализации динамической отрисовки UI, управляемый с сервера. Если дословно перевести, то SDUI переводится как пользовательский интерфейс (UI), управляемый сервером. На деле так и получается — API сообщает фронту, что и с каким содержимым отображать.
Например, если дизайнер указал, что цвет фона в UI-компоненте кастомизируется, то SDUI модель для этого компонента должна по умолчанию уметь настраивать цвет с бэкэнда. Аналогично со всеми другими свойствами компонентов: шрифт, размер, форма.
В статье расскажу, как мы максимально приблизили SDUI к дизайн-системе Альфа Мобайла, чтобы с его помощью отрисовать любой UI, который нам позволяет сделать дизайн-система. А также о том, как развивался SDUI, что в нём содержится, как работает и когда SDUI использовать всё же не стоит.