Как стать автором
Обновить
7.52

Swift *

Открытый объектно-ориентированный язык

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

Разделяемый координатор в SwiftUI

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров90

Использование координатора совместно с NavigationStack является общепризнанной практикой на протяжении последних трех лет -- быстро, удобно, надежно. Однако, в том случае если выбор конечных точек пути описывается перечислением, то по мере роста размеров проекта, начинает разрастаться и класс координатора. Пока количество конечных экранов приложения находится в пределах пяти десятком – это не является проблемой, поскольку Pascal/Camel/Snake нотиация легко секционирует группы экранов. Но на долгих проектах количество экранов переваливает за 2-3 сотни, и, в этом случае, перечисления на несколько сот строк становятся проблемой. Особенно, тогда, когда над проектом работает команда разработчиков.

Читать далее

Новости

Что в 2025-м можно рассказать о мобильной разработке

Время на прочтение14 мин
Количество просмотров364

Когда-то презентации новых iPhone и флагманов на Android приковывали внимание. Теперь же люди шутят, что там под бесконечное «amazing» показывают то же, что и годом ранее. Сногсшибательных инноваций уже не происходит, о чём тогда гордо говорить на камеру?

С мобильными конференциями иначе. Там ожидают услышать не новую сенсацию, а полезный контент, помогающий мобильным разработчикам лучше выполнять свою работу. И вот такой контент с годами не закончился: тут всегда есть, куда копать. А по его темам можно отследить, как с годами разработка менялась.

Мы впервые провели Mobius в 2014-м, ещё до появления iPhone X и Google Pixel. В апреле проведём его в очередной раз (в Москве с возможностью онлайн-участия). Каким именно контент будет на этот раз?

Программа уже готова, и представляем Хабру краткие описания докладов. Даже если вы сами не собираетесь участвовать в конференции, пробежаться взглядом всё равно может быть любопытно: это позволит понять, чем вообще живёт российская мобильная разработка в 2025-м.

Программа Mobius 2025 Spring

Новый Vapor Toolbox

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров168

Toolbox был переписан с использованием лучших инструментов в экосистеме и новейших функций Swift, и теперь он стал еще более мощным, чем когда-либо!


Старый Toolbox
Vapor Toolbox - это инструмент командной строки, который используется для решения распространённых задач при работе с Vapor, таких как создание, компоновка, запуск и развёртывание проектов.

В настоящее время большинство подкоманд Toolbox устарели, поскольку Swift и экосистема эволюционировали, предоставляя более совершенные инструменты для решения этих задач. Единственная функция, которая по-прежнему очень полезна, - это команда new, которая используется для создания новых проектов Vapor на основе шаблонов.

Шаблоны Toolbox - это репозитории Git, содержащие проект Vapor, и они используют Mustache для замены заполнителей(placeholders) пользовательским вводом. Для создания шаблонов Mustache в Toolbox использовалась библиотека, поддерживаемая сообществом Vapor, которая представляет собой Swift-оболочку для синтаксического парсера mustach, написанную на C.

Toolbox был создан с использованием ConsoleKit, библиотеки, созданной командой Vapor, которая предоставляет API для создания интерактивных инструментов CLI, разработанных до появления Swift Argument Parser. Возможности ConsoleKit по обработке аргументов в настоящее время считаются устаревшими, и вместо них рекомендуется использовать Swift Argument Parser.

Переписывание Toolbox
Все устаревшие подкоманды были удалены, и единственная оставшаяся функция - это команда new.

Мы заменили оболочку mustach на swift-mustache от Hummingbird, которая представляет собой библиотеку рендеринга Mustache, полностью написанную на Swift.

Читать далее

Ключевые моменты перед использованием SwiftData

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров281

На недавно завершившейся конференции Let's Vision 2025 я получил множество вопросов о SwiftData: «Достаточно ли SwiftData развита, чтобы использовать ее в реальных проектах?» и „Как начинающему разработчику эффективно использовать SwiftData?“. Эти вопросы не только отражают живой интерес разработчиков к новейшему фреймворку Apple для хранения данных, но и свидетельствуют о нерешительности при выборе технологии.

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

Читать далее

Истории

Формализация принципа Open/Closed: как сохранить обратную совместимость с помощью SOLID

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

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

Читать далее

Тактики ускорения билда: матиз, кобальт, камри 3.5

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров802

Меня зовут Дима, я iOS инженер-менеджер в крупнейшем телеком-операторе Казахстана. У нас 19 разработчиков — и билд-тайм для нас важная составляющая разработки. В этой статье я пройдусь по следующему пути: 

рассмотрю стратегии, которые вы сможете сразу применить; 
покажу реальные цифры из наших проектов; 
сделаю выводы и поделюсь инсайтами. 

Читать далее

Как стать iOS-разработчиком в 2025 году: подробный гайд для новичков

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

В данной статье не будет подробного разбора кода, я добавил краткие примеры, чтобы у тебя (если ты новичок), было представление о том, как выглядит в коде та или иная технология. Следуя этому плану, обращаясь к указанным ресурсам, можно уверенно дойди до уровня Junior и начать поиск свой первой работы.

Почему стоит выбрать iOS-разработку?

iOS-разработка остается одним из самых востребованных направлений в IT. Спрос на специалистов растет, зарплаты остаются высокими, а сам процесс разработки комфортный благодаря экосистеме Apple. Не стоит бояться разговоров о том, что рынок перегрет, главное знать зачем вы это делаете и просто дойди до конца.

💰 Сколько зарабатывают iOS-разработчики в России в 2025 году?

• Junior – 120 000–180 000 ₽

• Middle – 250 000–350 000 ₽

• Senior – от 400 000 ₽ и выше

Но чтобы получить первый оффер, нужно освоить Swift, UIKit, сетевое взаимодействие, архитектуры (у вас должно быть понимание, для чего та или иная архитектура, основные сущности, не обязательно глубоко разбираться) и основы хранения данных. Давай разберемся, с чего начать.

1. Изучение Swift и основ программирования

Swift – это современный язык программирования от Apple. На нем пишут приложения для iOS, macOS, watchOS и tvOS.

📌 Что нужно изучить в первую очередь?

✅ Основы (переменные, типы данных, операторы)

✅ Управляющие конструкции (if, switch, for, while)

✅ Коллекции (Array, Set, Dictionary)

✅ Опционалы (Optional, nil, guard let, if let)

✅ Основы ООП (классы, структуры, наследование, протоколы)

✅ Управление памятью (ARC, weak, strong, unowned)

Читать далее

Туториал: вход в мобильном приложении с Telegram

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.7K

Аутентификация в мобильных приложениях с помощью Telegram Login Widget обделена информацией как официальной документации, так и в интернете. В этой статье поделюсь примером реализации входа в iOS приложение c помощью Telegram. В статье приведены сниппеты кода на Typescript + React, Go и Swift.

Читать далее

Руководство по использованию unsafe в Swift

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

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

Читать далее

О iOS дизайн системе за 5 мин

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

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

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

Читать далее

Использование ChatGPT o3-mini и DeepSeek при создании iOS приложения Countries “Страны Мира”

Уровень сложностиСредний
Время на прочтение47 мин
Количество просмотров3.8K

Что делает «животворящая» конкуренция?

Появление DeepSeek, позволило бесплатным подписчикам ChatGPT получить доступ к «рассуждающей» ChatGPT o3-mini.

Я предложила этим двум ИИ создать довольно простое на первый взгляд тестовое iOS приложение Countries, которое показывает все страны Мира по регионам (Европа, Азия, Латинская Америка и т. д.) и для каждой страны её название и флаг, a также численность населения population, размер ВВП (валового внутреннего продукта) gdp и расположение страны на карте Мира.

Использовались данные Всемирного банка (World Bank), но мы не сообщали ИИ ни сайты, ни структуры данных, всё это ИИ должен найти сам и использовать их при создании iOS приложения.

Раньше я отдавала предпочтение Clause 3.5 Sonnet при создании iOS приложений, прибегая к ChatGPT 4.o1 для решения отдельных проблем. Но появление «рассуждающих» ChatGPT o3-mini и DeepSeek изменили всё.

iOS разработка поднялась на новый уровень, и пока лидером в этой гонке для меня является ChatGPT o3-mini (даже в бесплатном варианте). Он способен вас приятно удивить.

Читать далее

Идеи стоящие за дизайном языков программирования

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

Когда смотришь на дизайн синтаксиса того или иного языка программирования невольно задумываешься, почему сделано так, а не иначе. Тут я обозреваю лишь некоторые идеи стоящие за этим: "программисту нельзя доверять", "язык должен быть удобен для пользователя", "каким качеством должен обладать язык программирования, чтобы заменить другой?".

Читать далее

Сравниваю ChatGPT-4o и ChatGPT-o3-mini-high

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров10K

В прошлой статье многие подметили некорректность сравнения Deepseek и ChatGPT-4o. Изначально идея была сравнить максимально доступные пользователю версии.

Но сперва всё же хочется посмотреть как с одной и той же задачей справляются разные версии ChatGPT. Я в прошлом году делала анимацию (да, мне прям нравится по выходным, когда отдыхаю, кодить что-то максимально ненапряжное), так вот я её сделала в ChatGPT-4o.

Не сказать, что я прям получила удовольствие, скорее наоборот, выбесилась знатно. А на этой неделе решила её повторить уже с ChatGPT-o3-mini-high. Разница, конечно, колоссальная. Но обо всём по порядку.

Читать далее

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

25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область

Обновления в Swift Concurrency: что нас ждёт в Swift 6

Время на прочтение20 мин
Количество просмотров4K

Привет, Хабр! Меня зовут Никита, я занимаюсь iOS-разработкой в Яндекс Диске. Как вы знаете, прошлой осенью зарелизился Swift 6, а вместе c ним появились и строгие проверки для защиты от датарейсов, связанные со Swift Concurrency.

В этой статье я постараюсь разобраться с основными изменениями в каждом пропозале и поделюсь своими заметками, тем, что мне показалось самым важным или интересным. В конце статьи бонус — Playground с тестами для каждого пропозала, чтобы можно было поиграть с кодом, детальнее разобраться с изменениями и понять, как они влияют на код, написанный на Swift 5.

Читать далее

Sheet с автоматическим подсчётом высоты и поддержкой iOS 15

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

В этой статье я расскажу о том, как создать нативный Sheet, который автоматически подсчитывает свою высоту в зависимости от котента (SwiftUI View). Задача была в том, чтобы решение было c минимумом костылей и сохраняло поддержку iOS 15. Готового похожего решения мне не удалось найти, поэтому решил создать свой вариант.

Читать далее

Сравнение кода от DeepSeek и ChatGPT

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

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

Я решила дать два задания. Начнём с первого: нужно написать игру "Змейка", вот мой промпт:

Если лень читать - в конце ссылка на короткое видео сравнения (в телеграм канале).

Читать далее

Путь к стабильности: как мы снизили потребление оперативной памяти в iOS-приложении

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.3K

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

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

Читать далее

Первый шаг к кибернетическому тимлиду: автоматическое ревью кода на основе LLM

Время на прочтение10 мин
Количество просмотров6.7K

Привет, Хабр! Меня зовут Евгений Зорин, я ведущий разработчик в центре инноваций Future Crew. У моего проекта достаточно компактная команда. Нам постоянно нужно проверять критически важную функциональность, и часто это может сделать только сам разработчик. С появлением современных LLM, таких как ChatGPT, возникла идея об их внедрении для ревью кода. В качестве подопытного кролика был выбран Swift. В этом материале я расскажу, чего мы добились, какие инструменты использовали и как LLM справляется с поставленной задачей.

Читать далее

Вызов защищенного API из iOS-приложения на Swift

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров1.2K

Пошаговое руководство по использованию OAuth 2.0 при доступе к защищенным API из iOS‑приложения на Swift с Auth0.

Читать далее

Архитектура для SwiftUI — VSURF

Время на прочтение14 мин
Количество просмотров1.7K

Сегодня с вами Никита, iOS Team Lead в Surf. Никита объяснит, почему мы в Surf решили создать собственную архитектуру для разработки на SwiftUI. 

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