Обновить
128K+

iOS *

Мобильная ОС компании Apple

35,83
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Flutter 3.44 Конец эпохи CocoaPods и начало расцвета Swift Package Manager

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели7.6K

Экосистема Flutter совершила один из самых значительных скачков вперед. С выходом Flutter 3.44 команда официально сделала Swift Package Manager (SwiftPM) менеджером зависимостей по умолчанию для iOS и macOS, ознаменовав начало конца эпохи CocoaPods.

Но это еще не все. Этот релиз также знаменует собой серьезный архитектурный сдвиг в том, как поставляются виджеты Material и Cupertino. Давайте углубимся в детали.

Читать далее

Новости

Код Telegram iOS — лучший в индустрии. Почему же он так лагает на флагманах?

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели21K

Telegram — технически самый сложных мессенджер в мире. В iOS приложении 2.1M+ строк, 700+ модулей, 86% Swift, 13 лет кодовой базы, и мало ObjC — это колоссальный труд.

Но при этом приложение лагает на флагманах, AsyncDisplayKit открывает по 10 дублей окон разом(а это явно тормозит ARC), крэши на редактировании изображений стабильны годами.

Почему?

Потому что 86% кода написаны на Swift, но разработчики мыслят все еще в парадигме ООП.

ООП в Swift — это не просто устаревший стиль, это потерянная производительность.

Читать далее

Мобильная разработка за неделю #630 (11 — 17 мая)

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.2K

Возвращаемся после небольшого майского перерыва с новым дайджестом - советы и хитрости Xcode 16 и как добиться 0 рекомпозиций в сложном кастомном UI, три раунда войны с Android-клавиатурой в WebView и обновление без разрешения пользователя, 10 оптимизаций Swift, которые улучшат производительность, тестирование Compose по-новому, декларативная навигация для Flutter, под капотом перезапуска приложения Бургер Кинг и многое другое. Заходите!

Читать далее

Push-уведомления в мессенджере: production-грабли которых нет в туториалах

Уровень сложностиСложный
Время на прочтение9 мин
Охват и читатели13K

Это девятая статья про инженерные решения в ONEMIX. Тема узкая, push-уведомления. Но я её давно хотел разобрать, потому что туториалов в интернете много, а production-граблей в них почти нет.

Если коротко, туториал по push выглядит так. Регистрируешь токен через Notifications.getExpoPushTokenAsync(). Отправляешь на бэкенд. Когда приходит пуш — addNotificationResponseReceivedListener ловит тап, навигируешь в нужный экран. Всё.

В реальном мессенджере таких туториалов недостаточно. Появляется десяток узких проблем. Пуш приходит когда юзер уже в этом чате. Пуш приходит когда приложение убито системой. Navigation после открытия из пуша добавляет дублирующийся экран в стек. На iOS звонки идут через отдельный канал VoIP который требует совершенно другой инфраструктуры. Эти грабли я и разберу.

Читать далее

Синергия E2E и скриншотных тестов: создание надежной системы тестирования iOS с помощью XCTest

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.4K

Всем привет! Меня зовут Артур Поляков, я инженер по тестированию в отделе мобильной разработки в компании iSpring. Наша команда работает над iSpring LMS — мобильным приложением для дистанционного обучения сотрудников.

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

Читать далее

Первый реальный технический бенчмарк ИИ или ищем самый быстрый XML парсер для Apple платформы

Уровень сложностиПростой
Время на прочтение16 мин
Охват и читатели8.9K

Нет, это не déjà vu, это продолжение моей прошлой статьи Самый быстрый XML парсер для iOS в 2026 году? Чтобы вам не тратить время на ее чтение, вот краткий пересказ. В прошлой статье происходит поиск самого быстрого XML парсера со следующими характиристиками:

Для Apple платформы (iOS, tvOS, macOS)

Язык Objective-C или Swift

GitHub как источник исходников

Популярный (хотя бы больше 500 звезд)

Любая интеграция (CocoaPods, SwiftPM)

И самое важное, весь бенчмарк я писал сам с небольшой помощью ИИ, не спеша, под несколько чашечек кофе за 3 часа я нашел нужный мне XML парсер.

Спустя пару месяцев после выхода первой статьи, мне пришла мысль, зачем я тратил 3 часа на эту задачу, если можно было просто это самое задание “скормить” ИИшке и она бы за 5 минут решила бы ее (так пишут в интернетах). Тут же пришла вторая идея. Так как у меня есть мною лично проверенный результат, то я могу загрузить этой задачей все популярные ИИ и их результаты сравнить со своим. Даже не исключаю, что у меня где-то есть ошибка и тогда рейтинг парсеров будет выглядеть совсем иначе и я выбрал не самый быстрый как хотел.

Собственно, что я и сделал. Загнал задачу в топ 15 ИИ и сравнил их результаты со своим. Если вам интересно, кто справился с задачей, кто спасовал, будет описано в развернутой статье под катом.

Для затравки, наихудший результат и последнее место занимает GPT 5.5 Pro. А Claude Opus 4.7 не смог взять первое место.

Читать далее

Live Activities: как мы сделали обновление без разрешения пользователя

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели6.9K

Привет! Меня зовут Сергей, я тимлид iOS-команды в Банки.ру. В разработке уже 11 лет — успел поработать и на аутсорсе, и в продуктовых финтех-компаниях.

Если вы iOS-разработчик и планируете внедрять Live Activities в своё приложение — эта статья для вас. Особенно если обновления LA у вас триггерятся на бэкенде, а не в коде приложения. Мы наступили на несколько граблей, нашли неочевидное решение и хотим сохранить вам пару недель отладки.

Читать далее

Foundation Models в iOS 26: разбор фреймворка для on-device LLM

Уровень сложностиПростой
Время на прочтение20 мин
Охват и читатели5.7K

Foundation Models в iOS 26: разбор фреймворка для on-device LLM

На WWDC 2025 Apple показала одну из самых недооценённых вещей презентации — Foundation Models Framework. Теперь iOS-разработчики получили доступ к системной языковой модели Apple буквально в несколько строк Swift-кода.

Без OpenAI API. Без интернета. Без отправки данных в облако.

Читать далее

Как мы сделали автогенерацию документации для CI/CD из комментариев в коде

Время на прочтение5 мин
Охват и читатели9.3K

Привет, Хабр! Меня зовут Николай Чурянин, я занимаюсь iOS-разработкой в ПСБ. Сегодня я хочу рассказать вам, как делал новую документацию для нашего модуля CI/CD. Конечно же, документация у нас была и раньше. И даже не одна — а это, как понимаете, только усугубляло проблему. Часть документации лежала в readme-репозитории — с него-то она по сути и началась. Но обновлялась она там нерегулярно, оказалось, что работать с ней было не очень-то удобно. В какой-то момент этот репозиторий перестали поддерживать, и я попытался оформить её на внутреннем портале. Увы, пользы от этого стало ещё меньше: там документация была оторвана от кода — от наших скриптов. Вдобавок, её было трудно обновлять. Надо ли говорить, что и её забросили?

«Совсем без документации тоже нельзя», —  решил я и принялся искать другой способ. И нашёл его (спойлер: без ИИ тут не обошлось). Покажу, что получилось и как всё теперь работает. 

Читать далее

Клонирование устройства на Mac mini через ABM/MDM: что не так с решением и почему оно лучшее из возможного

Время на прочтение5 мин
Охват и читатели6.8K

У команды MyBox из Мастерской прошел тест-драйв гипотезы: можно ли сделать воспроизводимый продукт (наш MyBox) на Apple-железе так, чтобы удалённый узел мог криптографически проверить, что перед ним «правильный» продукт, а не подмена с применением админского доступа.

Спойлер: через хэш бинарника не проверяется, это решение отмели на краудсорсинге, а вот предложенное клонирование через ABM/MDM работает, но не элегантно. Вышло скорее размножение через центр, чем красивое p2p‑клонирование.

В конце — ограничения (в том числе про Россию) и почему мы продолжаем считать этот маршрут практичным для PoC/MVP. В комментариях оставили ссылку на разбор других (менее удачных) решений.

Читать далее

Simplphoto для iPhone объединяет ручную камеру, stop motion и коллажи

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.3K

Разработка iOS-приложения для ручной съёмки на iPhone: ISO, выдержка, фокус, RAW, stop motion и попытка ограничить вычислительную обработку снимков. Описываю принцип работы приложения.

Читать далее

Как я написал лучшее приложение для изучения иностранных языков с помощью SFSpeechRecognizer (нет)

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели10K

Вообще‑то, я бэкендер последние лет 20, но недавно остался без работы (и AI тут не причём), решил «замутить» свой «стартап», пока ищу новую работу Java‑программиста. А заодно подтянуть новые технологии, поглубже изучить немецкий и английский и немного развеяться…

Писать приложения под iOS было моим хобби последние лет 10, и пару моих приложений до сих пор постоянно висят в топе в Российском AppStore, но это были всё «игрушки», а захотелось сделать что‑то взаправду стоящее, и так возникла идея написать лучшее (ни больше ни меньше) приложение для изучения языков с помощью аудирования. Точнее, товарищ подсказал идею. А ещё точнее — идея давно была реализована под Андроид, но аналогов под iOS нет, а очень хотелось. И мне, и товарищу:). Да и смартфона с андроидом у меня нет и никогда не было, не судите строго, но не люблю я вирусы и глюки.

Идея следующая: берёте любое аудио на любом нужном вам языке, загружаете в приложение, и оно автоматически (можно так же вручную) разбивает аудиофайл на нужные вам сегменты для «шэдоуинга», аудирования, многократного прослушивания и тому подобного. Аналогов в сторе я не нашёл, точнее, что‑то отдалённо похожее там есть, но без своих настроек, без выбора своего контента для изучения, без красивой визуализации аудио, короче, без всего того, что нам бы хотелось иметь.

Итак, идея есть, какие технологии использовать? В старых моих приложениях был UIKit, Realm/CoreData, и, сториборды. Не судите строго, я как бэкэндер тогда не знал, что использование сторибордов среди «трушных» айосников считается плохим тоном и плохой приметой. Но теперь‑то я решил использовать современные технологии! И выбрал такой стэк: SwiftUI, SwiftData, Speech Framework. Что касается последнего, то он вроде бы доступен ещё с iOS 10, но я решил, что технологии развиваются, и распознавание текста из аудио должно было бы сделать со времени iOS 10 огромный рывок вперёд. Но теперь я не так сильно в этом уверен, и об этом эта моя маленькая статья…

Читать далее

17 лучших бесплатных аналогов Photoshop (топ альтернатив)

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели9K

Друзья, я снова с подборкой программ! Поскольку работаю с графикой и перепробовал много редакторов, то хочу подсказать, чем заменить Photoshop. Нашел варианты и для обработки фотографий, и для серьезного дизайна. Каждый по праву можно назвать лучшим бесплатным аналогом Фотошопа на русском языке.

Читать далее

Ближайшие события

Мобильная разработка за неделю #629 (20 — 26 апреля)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9K

В новом дайджесте уход Тима Кука и ненависть к Gboard, диск выбора месяца в стиле Airbnb и анимация зачеркивания текста в SwiftUI, основы разработки приложений для iOS, приватность в обычной клавиатуре, Kotlin-агент широкого профиля KMP, атаки мобильных приложений глазами хакера, рост релизов в App Store и Google Play и многое другое. Заходите!

Читать далее

AI в iOS-разработке: что у меня реально закрепилось в 2026, а что я выкинул

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели10K


За последний год я перепробовал всё: Cursor, Claude Code, Codex, локальные Qwen-модели для ревью, пять версий своего CLAUDE.md, Xcode MCP от Apple, mobile-mcp, Conductor для параллельных агентов. Что-то осталось в проде, что-то выкинул через неделю. А какие-то вещи, которые казались обязательными год назад, сегодня выглядят как антипаттерны.

Это статья не про «AI изменит всё» и не про то, как за вечер собрать Todo-приложение через Claude Code. Это про то, как iOS-разработчику, который уже живёт с AI-инструментами, выжать из них максимум - и не наступить на грабли, на которые наступили до тебя остальные.

Читать далее

Рецензия на книгу «Основы разработки приложений для iOS»

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.1K

Книга iOS 18 App Development Essentials (русское издание — «Основы разработки приложений для iOS») относится к тому типу учебников, которые остаются полезными даже при смене версий платформы. Основание так утверждать состоит в том, что автор выстраивает материал вокруг полного цикла разработки приложения, т.е. от установки набора средств разработки (SDK, Software Development Kit) и настройки среды до публикации в магазине приложений App Store. Такой подход делает книгу не просто справочником по версии iOS 18, а последовательным курсом по созданию приложений для операционной системы iOS в целом.

Читать далее

Мобильная разработка за неделю #628 (13 — 19 апреля)

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.6K

В этом выпуске сравнение быстродействия SwiftUI и UIKit, план изучения Android-разработки и Kotlin DSL для Android-шейдеров, прагматичный взгляд на архитектуру Flutter и пара детективов с поиском багов, как не надо делать скриншоты в App Store, диспетчеризация дома, поддержка Swift в разных IDE, тестирование взаимодействия нескольких устройств и многое другое. Заходите!

Читать далее

Фильтр Калмана, geohash fog of war и три реджекта Apple: как я собрал GPS-трекер на SwiftUI

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели7.6K

В 2024 году Google тихо убил Timeline в Google Maps. Историю местоположений перевели в «локальный режим», который на практике работает через раз - данные теряются, синхронизации нет, а у многих просто исчезли годы накопленной истории.

Для меня это было важно: я много езжу на машине и хотел знать простую вещь - сколько конкретная поездка стоит в бензине. Ничего подходящего не нашёл и решил написать сам. Я бэкенд-разработчик, до этого проекта не написал ни строчки на Swift - дальше про то, как за месяц вечерами собрал GPS-трекер с фильтром Калмана, fog of war на geohash и Live Activity.

Читать далее

Я сделал свободный и бесплатный Naive-iOS/macOS клиент

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели11K

Naïve-клиент для iOS и macOS и сервер, устанавливающийся одной командой

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

Читать далее

Вынесение бизнес‑логики из BLoC в use‑cases: прагматичный взгляд на архитектуру Flutter

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели5.6K

Начиная писать Flutter-приложение, для стейт-менеджмента часто хватает простого setState или простого решения, по типу BLoC/Cubit без излишеств. Но с течением жизни проекта ваши блоки могут начать превращаться в god objects. Внутри хендлеров могут находиться и запросы в сервисы, и валидация, и эмиттеры состояния, а для крупной страницы точно одним ивентом не обойдешься. В таких условиях разработка сильно затрудняется, становится сложно поддерживать и масштабировать проект, снижается тестируемость.

Это не субъективный опыт — строгая разделенная архитектура повышает гибкость, переиспользуемость и тестируемость кода. BLoC сам по себе — паттерн с отличной дисциплиной потока данных и строгим отделением бизнес‑логики от UI, но стоит немного расслабиться, и он разрастается до god объекта.

Цель этой статьи — продемонстрировать, как вынесение бизнес логики в use-cases может помочь вернуть контроль над ViewModel слоем. Это не попытка навязать единственный вариант реализации, а материал про технический компромисс, подтвержденный цифрами и опытом.

Читать далее
1
23 ...