ar
Feedback
iOS Dev

iOS Dev

الذهاب إلى القناة على Telegram

👨‍💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift

إظهار المزيد
7 998
المشتركون
+824 ساعات
+327 أيام
+7530 أيام
أرشيف المشاركات
iOS Dev
7 998
Приложение от создателей SwiftUI позволяет писать код на айфоне и шарить его в тестфлайт Bitrig создает нативные приложения S
Приложение от создателей SwiftUI позволяет писать код на айфоне и шарить его в тестфлайт Bitrig создает нативные приложения Swift через общение с AI. За считанные минуты и без знания кода (это заявление сильное, конечно) можно создать простое приложение и развернуть его в TestFlight. 🛠 Протестить можно здесь, доступно 5 запросов по умолчанию без подписки. Отличительная особенность от многих других в том, что его делают люди, которые непосредственно занимались разработкой SwiftUI в Apple, так что тут что-то может получиться. Результат запроса на написание погодного приложения на экране (а код, который получился, пошарил сюда). На мой взгляд, хайп на него спадёт (вернее, более крупные AI-решения попробуют сделать превью у себя), но сама идея пилить приложения на девайсах интересная. 😃 iOS Dev

iOS Dev
7 998
Как работать с SwiftData в фоновом режиме в Swift 6 Это может пригодиться, например, при работе с новыми LLM API (может быть
Как работать с SwiftData в фоновом режиме в Swift 6 Это может пригодиться, например, при работе с новыми LLM API (может быть множество случаев, когда мы хотим сохранить данные в существующие модели SwiftData). 📖 В этом материале можно посмотреть на пример адаптации существующего проекта (спойлер, всё не так сложно, как может показаться). А вот тут можно чекнуть паттерны и практики при работе со SwiftData в целом. 😃 iOS Dev

iOS Dev
7 998
Защита приложений для iOS: лучшие практики, инструменты и методы Безопасность - буквально важнейший аспект во многих типах пр
Защита приложений для iOS: лучшие практики, инструменты и методы Безопасность - буквально важнейший аспект во многих типах приложений (от мессенджеров до сектора здравоохранения и банковских приложений). К сожалению, периодически в СМИ всплывают истории про утечку персональные данные как вода сквозь песок. И хотя чаще причиной взлома становятся узкие места на сервере, необходимо защищать и наши клиенты от несанкционированного доступа.
Конечно, эта гонка бесконечна - на любую защиту всегда найдётся свой ключ и наоборот, но всегда есть рекомендации, которым можно и нужно следовать.
📖 В этой статье, которую написал наш читатель Сергей, знакомый вам по посту про повышение видимости приложения на устройстве, развёрнуто перечислены основные способы по защите мобильных приложений. Например, затрагивается и база про SSL pinning, и Secure Enclave, и примеры шифрования персональных данных в целом (а также популярные способы проверки на наличие джейлбрейка). На моей работе мы регулярно проходим аудит безопасности и стараемся следовать за современными тенденциями, поэтому от себя я бы добавил ещё и эту статью: 🔗 OWASP Mobile Application Security (хотя она скорее всего и так в избранном у команд сбера и не только). 📖 И этот небольшой пример также может оказаться полезен. А в закрытой базе уже есть специальный раздел, посвященный безопасности, аудиту и защите приложения от несанкционированного доступа. ✅Чтобы подписаться, загляните сюда (или можно прямо тут). 😃 iOS Dev

iOS Dev
7 998
С помощью чего вы работаете с Git?
Anonymous voting

iOS Dev
7 998
Разработчики на Objective-С получают самую высокую зарплату в России На Хабр Карьере провели очередное крупное исследование (
Разработчики на Objective-С получают самую высокую зарплату в России На Хабр Карьере провели очередное крупное исследование (примерно 60 000 специалистов в выборке), и составили несколько отчётов по зарплатам за первое полугодие 2025 года. Среди интересующих нас результатов: 💰 У разработчиков на Objective-С средняя зарплата 380 000 ₽ (самая высокая в отрасли), а на Swift 292 000 ₽. Среди компаний лидеры: Авито, Райффайзен Банк, Иннотех и VK. 📖 Сравнить тенденцию изменений можно с этим постом. 😃 iOS Dev

iOS Dev
7 998
Карта изучения Swift Concurrency Последние несколько недель я активно изучал самые интересные моменты в Swift Concurrency и ч
Карта изучения Swift Concurrency Последние несколько недель я активно изучал самые интересные моменты в Swift Concurrency и чем-то делился в канале, что-то пробовал в приложениях, а определённую часть выписывал и структурировал. Пришло время первого роадмапа по изучению Swift Concurrency (постарался пошагово пройтись по самым важным концепциям и доступно разложить по полочкам самое интересное). В канале уже есть и пример глоссария и разбор доступных нам инструментов в изложении Emerge Tools. Но я люблю разбираться в сложных темах, а декомпозиция помогает не только в решении задач, но и в разборах таких вещей. 🔗 Файл в большом разрешении в .pdf доступен всем желающим в моём бусти (достаточно просто подписаться даже на бесплатный уровень). 🧠 А в закрытой базе можно получить доступ к разборам каждой секции и пройтись по каждому этапу:
🔘 С чего начать (основны многопоточности, существующие проблемы GCD и нужен ли переход на Swift Concurrency). 🔘 Синтаксис async/await, обработка ошибок, применение @MainActor. 🔘 Tasks (что это, как работать, как отменять и для чего нужен detached). 🔘 Sendable, потокобезопасность на практике. 🔘 AsyncStream и разбор на реальных примерах. 🔘 Работа в реальных проекта (тестирование, отладка и способы избежать ошибок).
И это далеко не всё. ✅ Получите доступ к этому разбору и не только на бусти и прямо здесь уже сегодня. 😃 iOS Dev

iOS Dev
7 998
Огромный обзорный пост по всем изменениям UIKit в iOS 26 Ремарка - несколько месяцев назад целый ряд крупных ресурсов про iOS
Огромный обзорный пост по всем изменениям UIKit в iOS 26 Ремарка - несколько месяцев назад целый ряд крупных ресурсов про iOS сообщали о том, что UIKit (и UIApplicationDelegate, в частности) депрекейтнут, но как обычно без какого-либо подкрепления фактов. С тех пор прошла WWDC, и на практике всё совсем не так, в ближайшем времени фреймворк нам ещё пригодится. Сегодня делюсь чудесным разбором от Себа Видаля, который он писал несколько последних недель (поблагодарить его можно здесь). В нашем канале уже есть несколько примеров по важным изменениям во фреймворке (и в экосистеме в целом), но этот пост просто невероятен по объёму и количеству примеров. 📖 В этом посте можно познакомиться и с UIBackgroundExtensionView, и с UICornerConfiguration (шок, что этого не было ранее и я, например, писал кастомное решение с UIBezierPath для большинства проектов). Также есть изменения и в UIResponder, и в UIScrollView, и во многом другом. 🔗 Сохраните пост в закладки (релиз новой оси совсем скоро). 😃 iOS Dev

iOS Dev
7 998
Global actor в Swift Concurrency на реальных примерах ℹ️ Swift Concurrency ввел концепцию глобального актора среди async/awai
Global actor в Swift Concurrency на реальных примерах ℹ️ Swift Concurrency ввел концепцию глобального актора среди async/await и задач. Наиболее распространенным из них, вероятно, является @MainActor, про который можно почитать здесь и вот тут. Однако нам доступна возможность создавать и собственные глобальные акторы. Глобальный актор обеспечивает ту же изоляцию актора (безопасный, сериализованный доступ к данным), но есть и разница: вместо привязки к одному экземпляру он привязан к чему-то более широкому, например, к функции, свойству или даже целому типу. 📖 А о том, как его использовать (и как не допустить ошибок) можно прочитать в этой статье. 😃 iOS Dev

iOS Dev
7 998
Реализация мема: @escaping @Sendable @MainActor @autoclosure () async -> Void Каждый раз, когда мы встречаем сложные термины,
Реализация мема: @escaping @Sendable @MainActor @autoclosure () async -> Void Каждый раз, когда мы встречаем сложные термины, может казаться - что это поймут не только лишь все, но с помощью разбора теории и пары практических примеров почти всегда изначальная сложность исчезает или хотя бы кратно уменьшается. 📖 Статья Джейкоба Бартлетта посвящена реализации мема, который изначально заставил автора почувствовать синдром самозванца. В ней последовательно разбираются атрибуты от escaping до MainActor, и в итоге Джейкоб приходит к варианту:
Task { await allTheAttributes(await helloWorld()) } func allTheAttributes( _ then: @escaping @Sendable @MainActor @autoclosure () async -> Void ) async { Task { await then() } } @MainActor func helloWorld() { print("Hello, world!") }
😅 Как говорится, не пробуйте это дома (или на продакшне без должных навыков). Кстати, напомню, что в канале был пост с огромным глоссарием по Swift Concurrency. ✅ А вот тут есть примеры тем, вопросов - и несколько разборов подводных камней в Swift Concurrency. 😃 iOS Dev

iOS Dev
7 998
Путешествие в космосе - новый шейдер на Metal + SwiftUI 🧠 Первое, что видят пользователи в iOS IQ - одну из вариаций гиперпространства, нативно реализованного на Swift. Но, как известно, технологии постоянно идут вперёд, а мы вместе с ними. 🚀 Хочу поделиться с вами тем, что получилось (результат на гифке). Для получения доступа к исходному коду, примерам многому другому загляните сюда (или можно прямо вот тут). Ещё примеры:
🔗 Warp-эффект на metal-шейдере 🔗 Beauty infinite loop 🔗 Огненный шейдер 🔗 Люминофор
Ах да, ещё там множество сложных тем от алгоритмов до решения проблем с производительностью. 😃 iOS Dev

iOS Dev
7 998
Фуллстэк Swift: реализация гибридного приложения с помощью Vapor для сервера и SwifUI+Observation для клиента Technicolor — э
Фуллстэк Swift: реализация гибридного приложения с помощью Vapor для сервера и SwifUI+Observation для клиента Technicolor — это сайд-проект Криса Тротта, над которым он работает более десяти лет. Изначально использовался Ruby on Rails с поддержкой только браузеров, а теперь это полноценный Swift-on-server и нативное клиентское приложение для девайсов Apple. Небольшая ремарка: к сожалению, часто вижу подмену понятий на счёт того, кто такой фуллстэк разработчик, но базово это специалист, который может сделать одновременно и клиент, и сервер (а не андроид + iOS клиент). 📖 На этом пути Крис столкнулся с самыми разными сложностями, и поделился ими в большом развернутом материале: 🔘 Обзор архитектуры. 🔘 API-слой. 🔘 Серверная часть и мысли на счёт фреймворка Vapor. 🔘 Аутентификация, сервисы и тестирование. 🔘 Клиентская часть: настройка проекта, работа с API и архитектура. Несмотря на то, что Крису удалось всё это завести, в любом случае он считает, что Swift в качестве сервера пока ещё далеко не самый прагматичный выбор. Все его преимущества не компенсируют того, насколько он отстает в более широкой экосистеме веб-фреймворков. 😃 iOS Dev

iOS Dev
7 998
Правильно поставленный вопрос Пожалуй, одно из самых изматывающих занятий, с которыми вы можете столкнуться на практике - это фикс проблем, которые возникают при неординарных условиях, у одного человека и вообще при определённой фазе луны. Скорее всего в таком случае у вас есть отдел поддержки (или просто фидбэк пользователей в тестфлайте/других системах), но и его может быть недостаточно. Приведу пример, с которым сталкивался несколько лет назад: прилетела обратная связь, что приложение не подгружало данные от слова совсем. Не грузились картинки, да и вообще по словам пользователя, всё не работало (ну классика же). По логам при этом всё было чисто, а по айдишнику юзера не наблюдалось никаких аномалий. Мы вместе с саппортом пытались повторить сценарий юзера, по которому он шёл, логин-проверка актуального стейта данных и подгрузка диффов, всё вроде чётко. Но что-то мне не давало покоя, и мы задали контрольный вопрос - а где эта ситуация происходила? Ответ был простым: в самолёте. Человек на высоте в 10 км решил проверить, что не так, и получил очевидное поведение. Тогда не везде был wi-fi, да и сейчас мягко говоря не все авиакомпании предоставляют такую опцию, например, во многих самолётах british airways точки доступа может не быть вовсе (если речь не о межконтинентальных перелётах). Или ещё чекайте пример: при воспроизведении видео не было звука. Человек получал сообщение с медиа-энтити, врубал видосы, перематывал их туда-сюда, а звука нет. С этим сценарием и прилетел запрос к нам через саппорт. Догадались, что было? Ответ всё также на поверхности - всего лишь не был включён регулятор тихого режима. А ещё есть бесчисленные истории, когда жаловались на скорость работы приложения в кейсах, когда было меньше 20% зарядки и включён режим энергосбережения (тут даже объяснять не надо, что и почему так, надеюсь). Безусловно, мы с вами можем стараться покрыть самые разные сценарии, но реальная жизнь порой подкидывает загадки жака фреско, решение которых может крыться совсем не в логах кибаны или firebase. Я очень давно играю в разные квизы и интеллектуальные игры (тут можно пошутить про аббревиатуру ИИ), и поэтому создал себе пару приложений для тренировок, и даже там всегда надо помнить о фразе: 😉 Правильно поставленный вопрос - уже половина решения. Были ли у вас в разработке ситуации, когда вы сталкивались с необычными ситуациями? Поделитесь ими, этим вы поможете коллегам не наступить на те же грабли. 😃 iOS Dev

iOS Dev
7 998
FoundationModels Framework и пример создания приложения для внешних LLM-провайдеров В Xcode 26 Beta 4 доступна новая опция GeneratedContent с json для передачи ответов от внешних LLM-провайдеров, таких как OpenAI, Anthropic, Gemini и многих других. И хотя этот фреймворк позволяет нам использовать мощные возможности ИИ на устройствах, но с ограничениями реальной модели (не так много поддерживаемых языков, да и окно контекста недостаточно большое) ее может не хватать. Многие приложения всё также будут продолжать полагаться на внешних поставщиков LLM. 📖 В развернутом материале можно чекнуть, как создать такое приложение.
По факту есть возможность выбрать из списка компанию для получения отчётности, указать временной диапазон для этой информации и задать любые дополнительные вопросы.
🛠 А вот здесь можно посмотреть на код проекта на GitHub (нужен Xcode Beta 4 и новая макось + iOS). ➡️ В этом посте можно ещё раз взглянуть на набор советов по работе (от управляемой генерации до сохранения ответов). 😃 iOS Dev

iOS Dev
7 998
Усложнение разработки Сегодня, решая очередную задачу, связанную с саппортом новых фич для проекта, задумался вот о чём. Хотя у нас и появляется больше возможностей и новых API и какие-то вещи становятся проще, например, в верстке - это довольно обманчиво. Язык усложняется, Swift 6 и миграция проекта может стать головной болью любого разработчика. Только вдумайтесь, что у нас появилось за последнее время: и таски, и акторы, и preconcurrency, я уже не говорю про isolation domains и boundaries (кстати, разбор изоляции есть здесь). И хотя в разработку многие уже активно вводят ИИ, а на конфе от Яндекса будет даже отдельное соревнование - это не всегда полезное решение. Упрощение верстки в SwiftUI - за что мы его любим (а кто-то ненавидит), также спорное. Вопросы с производительностью остаются критическими и на моём проекте, поэтому для чата мы до сих пор не впилили новую верстку на SwiftUI. У нас могут быть кейсы с обработкой нескольких десятков (и иногда сотен) сообщений в секунду - и это может стать критикал поинтом для ненужных обновлений. Если сейчас кажется, что ИИ - серебряная пуля, то на мой взгляд, сложности при использовании ИИ начнутся позже. На поддержке. На обновлении логики. На рефакторинге. У вас, безусловно, собственное мнение на этот счёт - и я не претендую на истину. Но считаю, что каждое действие стоит обсудить на переправе, иначе ошибка на проекте может превратиться в огромную лавину крашей или, что того хуже - отсутствия понимания, почему было реализовано именно так. Кстати, этот вопрос характерен и не только для таких решений, но и например для крупных, солидных проектов с кодовой базой в миллион строк и более. Те, кто разбирал код телеги, поймёт, про что здесь речь. На мой взгляд, даже при наличии современных решений, сложность проектов будет только расти. Какие-то решения станут цениться меньше, но способность поддерживать крупные проекты и понимать причину условного краша у 0.0005% будет на вес золота. Стоит инвестировать не только в AI-тулзы, но и в самих себя. Ваши знания сослужат вам хорошую службу. Даже сейчас. 😃 iOS Dev

iOS Dev
7 998
SwiftUI и разработка под macOS 26 Безусловно, подавляющее большинство разработчиков не пилят отдельный таргет для макоси, нес
SwiftUI и разработка под macOS 26 Безусловно, подавляющее большинство разработчиков не пилят отдельный таргет для макоси, несмотря на это, существуют отдельные приложения, которые используют macOS в качестве основной платформы для своих приложений. 📖 В этом проекте можно познакомиться с разбором основных нововведений в предстоящем релизе, среди которых: 🔘 Обновление работы с App Icon (и пример использования Icon Composer). 🔘 Пример новых контролов. 🔘 Работа с Web view. 🔘 Rich Text. 🔘 Пример работы с длинными списками. 🔘 Menu item и иконки. 🔘 Пара слов про Concurrency. 🔘 Тулбары. 🛠 Сам проект доступен на GitHub. Возможно, пора обновить Starly. 😃 iOS Dev

iOS Dev
7 998
🎉 Шаг вперёд - бонус для всех подписчиков iOSDev Уже несколько лет я делюсь своими знаниями, полезными советами и кайфовыми вещами из мира разработки здесь, в телеграме. Моя основная работа отнимает много времени, с некоторыми багами, особенно трудновоспроизводимыми, приходится разбираться по несколько дней (ну, вы понимаете). Несмотря на это, я стараюсь равномерно развивать не только канал, но и бусти, и весь арсенал приложений, двигаясь в ногу со временем. Вы знаете, как тяжело находить мотивацию на некоторые вещи, но благодаря обратной связи (не только в тестфлайте, но и личных сообщениях, и в канале - я понимаю, что всё не зря). Сегодня я анонсирую первый релиз продукта, над которым я трудился продолжительное время. 🤩 Сайт iOS IQ — первый и самый надёжный связующий элемент между каналом, блогом и приложением. Я не слишком хорошо знаю модные фреймворки, поэтому реализация на чистом html+css+script (ну и пара открытых источников для подсветки кода). А, ну ещё потому - что тащить зависимости не всегда полезно. Синк изменений запилил с помощью github actions, когда-то давно для этого приходилось бы пилить кастомные скрипты, сейчас конечно это очень удобно. Безусловно, перенести всё пока было невозможно - поэтому там уже сейчас около 50 полезных лайфхаков и примеров (но возможности для развития шикарные). 📖 Сохраняйте в закладки. Я уже привык, что у меня крадут оформление, стиль, пытаются копировать посты или даже искать несуществующие проблемы, но то, что украсть нельзя - энтузиазм, опыт и знания. Подпишитесь 💰 на бусти и ⭐️ прямо здесь — получите доступ к огромному количеству материалов, а ещё это лучший мотиватор для того, чтобы в индустрии были не только промпт-инженеры, но и те, кому не всё равно. Дальше - будет интереснее. 😃 iOS Dev

iOS Dev
7 998
23 августа пройдет Yandex Mobile Runtime — фест Яндекса для мобильных разработчиков Ивент для мидлов и сеньоров с упором на практику: без теории и скучных лекций. В программе: — AI-хакатон. Создайте работающее приложение за 5 часов с AI-помощниками. Оценивать продукт будет жюри в лице Геннадия Евстратова, руководителя проектов в Яндексе, Анны Жарковой, руководителя практики мобильной разработки Usetech, и других. Регистрация на хакатон отдельная. — Воркшопы по MCP и ускорению приложений и не только. Карьерные консультации с лидами и сеньорами мобильный разработки из Яндекса и других компаний. — Решение задач на тренировочной платформе CodeRunКвиз для iOS-, Android- и Flutter-разработчиков по мобильной разработке с задачами, шутками и отсылками. А еще — вместе с Городскими сервисами Яндекса обсудим метрики приложений и BDUI, поиграем в настолки в зоне от экспертов Поиска и рекламных технологий и отдохнем с ребятами из Почты, Диска и Календаря в кастомном баре от Яндекс 360. Только офлайн. ➡️ Регистрируйся тут.

iOS Dev
7 998
Какая средняя зарплата мобильного разработчика в мире? На StackOverflow вышел большой отчёт опроса разработчиков, с которым м
Какая средняя зарплата мобильного разработчика в мире? На StackOverflow вышел большой отчёт опроса разработчиков, с которым можно ознакомиться здесь. К слову, кроме традиционных составляющих, разработчики ответили и на вопросы об AI: пользуются около трети, а вот готовы максимально доверять результатам помощников - только 3.1%. А вот и результаты опроса по зарплатам для мобильных разработчиков (внимание, результаты до налогов): 🇺🇸 $ 170 000 в год. 🇩🇪 $ 93 972 в год. 🇬🇧 $ 99 383 в год. 🇫🇷 $ 63 228 в год. ... 🇮🇳 $ 10 462 в год. Увеличение по сравнению с 2024 годом - на 20%. 💸 А вот результаты аналогичного опроса в России: в первой половине 2024 года, во второй половине. 😃 iOS Dev

iOS Dev
7 998
Threads против Tasks в Swift Concurrency По мнению Антуана из статьи ниже, разработчики могут задаться вопросом, чем различаю
Threads против Tasks в Swift Concurrency По мнению Антуана из статьи ниже, разработчики могут задаться вопросом, чем различаются треды и таски, если ранее писали на Swift или Objective-C, используя GCD и традиционные API. Так называемое потоковое мышление уже много лет помогает нам разрабатывать приложения, работающие с асинхронными функциями. Но в современной разработке на помощь приходит Swift Concurrency и методология async/await. Вместо того чтобы создавать метод и юзать замыкание, теперь нужен Task { ... } для запуска асинхронного контекста. Следующий вопрос, который появится: где будет выполняться созданная нами задача - в основном или фоновом потоке? 📖 В этой статье можно получить ответы не только на этот вопрос, но и разрешение многих заблуждений. 😃 iOS Dev

iOS Dev
7 998
Что изменилось в поиске iOS и iPadOS 26 В iOS и iPadOS 26 добавилось несколько новых API для обновления визуального стиля и р
Что изменилось в поиске iOS и iPadOS 26 В iOS и iPadOS 26 добавилось несколько новых API для обновления визуального стиля и размещения поисковой панели. 📖 В этом посте Наталья Панферова рассматривает, как можно использовать эти улучшения для реализации поискового интерфейса. Рассмотрены два распространенных шаблонах поиска в приложениях: на панели инструментов и на панели вкладок. Кроме этого, приведены примеры: как работает каждый из этих вариантов, что изменилось и как реализовать их в SwiftUI. ➡️ Кстати, в канале есть примеры, как можно несложно внедрить фичу с поисковыми подсказками. 😃 iOS Dev