iOS Dev
Open in Telegram
👨💻Автор: Виктор Грушевский (@Viktorianec) ⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru 🍏Канал об iOS-разработке, алгоритмах и архитектурах ⭐️ Подготовка к собесам ⭐️ Код. Много кода. #ios #mobile #swift
Show more7 995
Subscribers
+824 hours
+327 days
+7530 days
Posts Archive
7 998
Kinetics - опенсорсная либа для эмуляции реальной физики в анимациях SwiftUI
Основана на Swift 6 (с соответствием требованиям параллелизма) и добавляет естественности взаимодействию пользователя с приложением.
🛠 Доступна на GitHub (есть демка).
По требованиям к проекту: iOS 15.0+ / macOS 12.0+ (и Swift 6.0+).
😃 iOS Dev
7 998
Лучшие доклады конференции Pragma Conf 2025
#Pragma Conference — международная конференция, полностью посвященная разработке приложений для iOS, macOS, watchOS, visionOS и tvOS. Она прошла всего пару недель назад, а доклады уже выложили, и там много интересного:
📺 Swift 6.2 и миграция приложения
Антуан делится тем, как параллелизм может решить ключевые проблемы разработчиков.
📺 The Attribute Graph: невидимая рука SwiftUI
Много деталей про систему, буквально лежащую в основе SwiftUI.
📺 Альтернативные маркетплейсы на iOS: интеграция и инновации
Тема, которая может пригодиться крупным игрокам рынка: рассмотрены вопросы настройки, этапы разработки, советы по тестированию и многое другое.
📺 Священный секрет скорости нашего приложения
Маттео Раттотти и Константин Ерохин делятся необычными способами, которые повысили производительность для всех пользователей.
📺 Радости и трудности незрячего программиста
Аркадиуш Свентницкий рассказывает о доступности с точки зрения разработчика. Этот доклад можно только слушать.
📖 Все доклады можно посмотреть здесь.
😃 iOS Dev
7 998
Как улучшить производительность SwiftUI-приложений
SwiftUI сильно упростил разработку интерфейсов, но c увеличением размера, кодовой базы и сколь-нибудь сложной логики начинаются проблемы (ха, на самом деле можно упереться в лаги даже при отображении буквально пары картинок).
Я уже делился огромной подборкой инструментов, советами инженеров Apple и многими неочевидными историями, как ускорить отклик вашего приложения. А также новыми доступными инструментами.
В новом большом разделе я постарался привести множество реальных моментов в коде SwiftUI, импакт от улучшения которых может быть очевиден на реальных проектах даже при небольших, точечных изменениях.
Ещё раз напомнил о флаге LogForEachSlowPath, примерах с async/await и без кэширования не обошлось.
Если вы делаете первые шаги в SwiftUI (или в целом хотите узнать немного больше), то подписывайтесь:
💰 На бусти и ⭐️ в телеграме.
А пока вы ещё не решились, рекомендую стартовать с этих сессий:
📺 Демистификация и устранение недочетов на этапе рендеринга
📺 Поиск проблем с анимацией пользовательского интерфейса
📺 Использование инструментов для поиска неполадок
🧠 Что вы получите, подписавшись сегодня: ➡️Разбор нескольких сотен вопросов на сложные темы ➡️Вопросы на чтение кода ➡️Многопоточность ➡️DispatchQueue: практические вопросы ➡️Swift Concurrency ➡️Алгоритмы: терминология и примеры ➡️Память: ARC, side table, флаги, утечки ➡️Множество анимаций, шейдеров и не только Подписаться можно на 💰 бусти и ⭐️ в телеграме.😃 iOS Dev
7 998
🚀 Прокачали автодополнение кода в Swift
Проект, представленный Ахмедом Эльрефаи в рамках Google Summer of Code, расширяет реализацию протокола языкового сервера (LSP) для языков Swift и C.
Теперь мы сможем видеть полную документацию, а не только краткое описание (и бонусом все аргументы, доступные для передачи при вызове методов).
VS Code, Neovim, IntelliJ IDEA, Vim (редакторы с поддержкой LSP) получат профит от этих улучшений, другие преимущества описаны тут.
📖 Эта работа уже вошла в проект SourceKit-LSP и будет включена в будущую версию тулчейна Swift.
😃 iOS Dev
7 998
Новая партнерская программа App Store Mini Apps
📖 Сегодня анонсировали партнёрку Mini Apps (созданных, например, на HTML5 и JavaScript).
Предлагают и сниженную комиссию в размере 15% от продаж соответствующих покупок в приложениях.
Правда, для получения этого бонуса разработчики должны использовать API Declared Age Range и API Advanced Commerce.
➡️ Полные требования, критерии получения доступа к программе и Q&A опубликованы здесь.
😃 iOS Dev
7 998
Как ИИ-слоп влияет лично на меня
Создание контента в эпоху бездумного копирования может и кажется со стороны глупой затеей, но я видел атакующие корабли, пылающие над Орионом множество примеров, когда более талантливые разработчики с крутым бэкграундом просто-напросто переставали чем-то делиться из-за того, что их код оборачивали и продавали в десятки раз дороже, а поделки выставляли как инновационные решения (вообще, если пойти шире, такое сплошь и рядом).
Все посты, которыми я делюсь - всегда сопровождаю ссылками, неважно - читатель ли нашего канала решил рассказать про GCD или кто-то из твиттера выложил кайфовое решение под новый год.
Но есть индивиды, неспособные написать три слова без ошибок, которые регулярно как шакалы рыщут по моему каналу в поисках постов, которые вызвали самый большой отклик.
Таким товарищам не хочется задавать никаких вопросов, только пожелать в будущем подключить хотя бы частично мозг, чтобы при прогоне через ИИ добавлять промпт: сделай также, но чтобы было незаметно, что контент чужой.
Я решил поделиться парой примеров, которые мне прислали некоторое время назад (и это только из каналов, в которых подписчиков более тысячи, хотя может и они искусственные).
Или как там, великие художники воруют?
Напомню, что всегда можно отличить знание от повторения, даже если будет использована самая дорогая подписка.
😃 iOS Dev
7 998
Новый раздел в Swift Tutorials от Apple: работа со SwiftData
Полезный набор туториалов пополнился ещё одним разделом, в котором можно познакомиться с понятным примером работы с данными и созданием кастомных вьюх для их отображения.
Показывают, как настроить проект, как добавить Photo Picker, создать контейнер данных, а ещё реализовать возможность сохранения/отмены изменений.
📖 Весь урок доступен здесь.
🛠 Стартовый проект для работы - вот тут.
😃 iOS Dev
7 998
Repost from VK Team
Мобильные разработчики, как насчёт запетлять на Mobius 😉
Если вы не успели взять билеты — не беда: мы разыгрываем две проходки на ивент, чтобы вы точно смогли посмотреть на наш стенд и послушать коллег 💙
Условия простые:
✅подпишитесь на каналы @vkjobs и @mobilehubvk
✅нажмите кнопку «Участвовать»
✅увеличьте свои шансы и пригласите друга — вместе веселее!
Информацию об организаторе, правилах и призах ищите здесь, а результаты конкурса мы подведём 14 ноября. Удачи!
Участников: 98
Призовых мест: 2
Дата розыгрыша: 16:00, 14.11.2025 MSK (2 дня)
7 998
Совет по производительности для List+ForEach в SwiftUI
Если ваш список лагает, то здесь может помочь параметр
-LogForEachSlowPath (ставим в YES), чтобы SUI логировал ворнинги, как для этой ситуации.
🛠 Можно юзать и напрямую через UserDefaults, пример - вот тут.
😃 iOS Dev7 998
Проектирование и создание кастомных лэйаутов в SwiftUI
📖 В официальной документации есть отличный пример с разборами многих инструментов проектирования.
🛠 Например, в этом приложении реализованы кнопки для голосования за определенный тип питомца (а ещё количество голосов и относительный рейтинг в лидерборде). Оно также показывает аватары питомцев, расположенные в соответствии с текущим рейтингом.
А ещё там разобраны следующие моменты:
➡️ Принцип работы ViewThatFits (кстати, в канале есть пост)
➡️ Повышение эффективности лэйаута с помощью кэширования
➡️ Анимация переходов между различными лэйаутами
🔗 А ещё в канале можно посмотреть на этот ресурс (в котором наглядно показано, как именно влияют на отображение определённые параметры при создании лэйаута).
😃 iOS Dev
7 998
Советы по оптимизации скорости и производительности приложений от Apple
📺 Опубликовали видео с прошедшей онлайн-сессии Apple, на которой рассказали о нескольких подходах к работе и с Liquid-дизайном, и о том, как использовать некоторые из доступных нам инструментов.
🕔 Про оптимизацию энергопотребления при использовании нового дизайна
🕜 Генерация быстрых ответов с использованием Foundation Models
Это мне пригодится.
🕢 Глубокое погружение в перфоманс SwiftUI
🕗 Инструменты производительности в Snap
😃 iOS Dev
7 998
Кстати, вышел Pluribus - визионерское высказывание Винса Гиллигана, автора шикарных сериалов «Во все тяжкие» и «Лучше звоните Солу».
Преамбула сериала заключается в том, что весь мир буквально охвачен счастьем, но главная героиня видит в этом огромную опасность для человечества - это не спойлер, лишь теглайн с imdb/кинопоиска.
Хотя главная мысль куда шире и диапазон смыслов подобно лавине накатывает ещё в первой серии.
Невозможно не заметить отклик и со стерильными, отточенными движениями каждого из персонажей, которые перекликаются в том числе даже с сессиями WWDC, по крайней мере такая аналогия возникла во время просмотра (ах да, Apple и выступает в качестве платформы стриминга по дефолту).
К слову, ещё здесь персонажи соглашаются со всем подобно ИИ-агентам, которые так и наровят сообщить герою: «Да, вы абсолютно правы, съешь ещё этих мягких французских булок, да выпей чаю».
В отличие от паразитирующих, повторяющихся клише в каждом из комиксоподобных однотипных поделок, которыми как из рога изобилия посыпали кинотеатры зрителей за скромную плату последние пятнадцать лет, прописанный характер главной героини не стремится понравиться зрителю - у неё свои скелеты в шкафу и свои демоны, которые ведут к неожиданным последствиям.
В Pluribus содержится и то, что можно увидеть в течение первых пятнадцати минут. Это латинское слово, означающее из многих. Но ещё это часть более широкой фразы: из многих - единое. И почему это так - можно узнать, посмотрев Pluribus.
Думаю, что мысли про параллели с ИИ возникнут у многих, вопрос лишь в том - опыт какого из персонажей окажется ближе лично вам.
😃 iOS Dev
7 998
Что нового в Swift - новый раздел на swift.org
На сайте вышел первый ежемесячный дайджест, в котором рассказывается не только о новостях Swift, но также приводятся мнения и точки зрения представителей всего, что так или иначе связано с экосистемой.
В октябрьском выпуске освещаются основные моменты конференции Server Side Swift, выпуск основных пакетов и последние пропозалы Swift Evolution.
Например, там есть ссылка на интересный доклад Бена Коэна:
📺 Юзабилити и производительность в Swift
Бен рассказал о том, как развивается язык и как именно он позволяет достичь максимальной производительности при всех тех изменениях, что происходят.
Затронули и InlineArray и Span, и многое другое.
📖 Целиком дайджест можно почитать здесь.
😃 iOS Dev
7 998
Вышло новое интервью с Крисом Латтнером - от Swift до Mojo
Мне понравился момент, когда он сказал буквально следующее:
До Swift я пытался создавать свои пет-проекты на Objective-C, но меня раздражали квадратные скобки и было трудно разобраться с указателями и крашами. Мне даже казалось, что я недостаточно хорош для создания приложений.Поэтому он создал свой язык программирования! 💪 Вот это я понимаю кардинальное решение проблемы. Красиво, Крис, вопросов нет. 📺 Вообще в интервью много интересных моментов: ➡️ Про компиляторы в начале 2000 ➡️ Почему Крис создал LLVM ➡️ Процесс создания языка программирования ➡️ Swift Playgrounds - как программирование стало более доступным ➡️ Какие проблемы решил Swift и какой технический долг появился ➡️ Недостатки компилятора ➡️ Что можно почерпнуть из изучения компиляторов 📺 А прошлое интервью можно посмотреть здесь. 😃 iOS Dev
7 998
Небольшой анонс на счёт приложения iOS IQ
Я опросил несколько человек на счёт того, что они думают на счёт автогенерации вопросов в будущем - и, конечно же, мнения разделились.
Много плюсов, среди которых буквально абсолютный рандом, возможность генерации вопросов на любые темы и в целом возможность отдать управление сложностью алгоритмам эпла.
Среди минусов: та же непредсказуемость валидности исходных вопросов, совершенно неочевидно, насколько правильным является ответ и, например - насколько он вообще корректен.
Несмотря на это, я все-таки поэкспериментировал вчера с Foundation Models - и думаю, что в каком-то виде (отдельном, с пометкой про AI и то, что вопросы сгенерированы) этот раздел появится.
Небольшая демка уже есть на гифке.
Если вы хотите получить доступ к ранним версиям в тестфлайте, подпишитесь в ⭐️ в телеграме или 💰 на бусти.
Любые идеи и обратная связь приветствуются, например - какой режим лично вы бы хотели увидеть - напишите в сообщения канала или мне в лс.
Напомню, что в ноушне есть множество тем, которые я создавал вручную и это не изменится в будущем: лучше я потрачу несколько часов, но буду уверен в корректности.🛠 Кстати, недавно появился полезный SPM в качестве замены системному, в котором можно юзать любой кастомный провайдер моделей. 😃 iOS Dev
7 998
Интеграция функциональности камеры в SwiftUI
Хотя на SwiftUI проще создавать практически любые компоненты интерфейса, для работы с камерой требуются более низкоуровневые возможности AVFoundation.
📖 В этом материале можно посмотреть на пример решения такой задачи.
Для этого в примере используется четыре основных компонента:
CameraManager, CameraPreview (для бриджа превью-слоя AVFoundation в SwiftUI через UIViewRepresentable), CameraView - для взаимодействия с камерой и PhotoView (для фотогалереи).
😃 iOS Dev7 998
Доклады с конференции Swift Connection 2025
В открытом доступе появился список докладов с парижской конференции этого года.
Среди наиболее любопытных:
📺 Что на самом деле происходит с вашим iOS-приложением во время компиляции
В этой сессии разбирают файлы .xcarchive и .ipa, чтобы показать на примерах, что Xcode делает с исходным кодом. Рассказывают и о процессе компиляции, Mach‑O, Info.plist, метаданных Obj-C/Swift и много другом.
📺 Улучшенная обработка ошибок в Swift: от Obj-C Legacy к Swift 6
Докладчик рассказывает, почему даже LocalizedError не всегда надежён, и как выглядит по-настоящему нативная обработка ошибок в Swift.
📺 Удивительный мир приватных API
В этом докладе рассказывается не только о том, как они работают, но и то, как их, например, искать и применять в Objective-C (и пытаться использовать в Swift).
📺 Создание приложений для iOS без Xcode, с использованием Cursor+Claude
В лекции можно узнать больше про Cursor, Claude Code и настроить свой проект для сборки за пределами Xcode.
➡️ Большая подборка докладов с других конференций в этом посте.
😃 iOS Dev
7 998
🚀 Роадмап по принципу работы тайп-чекера и планов на его улучшение в Swift
Наконец-то в одном месте появилось детальное объяснение не только существующих проблем, но и вообще того, как устроен тайп-чекер.
📖 Слава Пестов написал огромный пост о том, что проводится уже сейчас для улучшения проверки типов выражений в компиляторе.
Сюда входят изменения, которые уже были реализованы в Swift 6.2, изменения, которые находятся в мэйн-ветке, изменения, над которыми планируется работать в следующем, а также предварительные долгосрочные планы.
Речь о том самом:
the compiler is unable to type-check this expression in reasonable time (тут можно чекнуть пару подходов).
Слава прошёлся и разложил по полочкам несколько важных разделов:
➡️ Про перегрузку (какие вообще варики допускает Swift)
➡️ Решение ограничений (как вообще это реализуется компилятором)
➡️ Алгоритмическая сложность
➡️ Что вообще значит reasonable time
➡️ Недопустимые выражения, режим восстановления и диагностика
➡️ Цели (и не только они)
➡️ Что уже улучшили в Swift 6.2
➡️ А что планируется в Swift 6.3
➡️ Будущие улучшения (про оптимизацию биндингов, удаление хаков производительности и многое другое)
➡️ Планы на будущее
😃 iOS Dev7 998
Реализация анимации Tap to Cash и эффекта Таноса (SpriteKit + CoreMotion + SwiftUI)
Приятные анимации и флоу взаимодействия для пользователя часто будут решающим фактором при выборе вашего приложения среди прочих.
Например, одна из самых кайфовых анимаций прошлой оси - это tap to cash.
Её можно реализовать и на Metal, и на SpriteKit.
В этот раз решил пойти вторым путём. Для этого можно юзать эффект турбулентности с помощью turbulenceField. В отличие от аналогичного с шумом наша сила будет пропорциональна скорости объекта внутри нашего поля.
Для того, чтобы создать эффект завихрения можно юзать любую интервальную функцию (в своём решении я запилил несложный аналог осциллограммы через
sin(currentTime * EmitterConstants.oscillationMultiplier).
Для оптимизации распадающихся цифр (вообще тут тоже можно юзать любое вью/картинку и так далее) можно чекнуть массив пикселей (пригодится CGContext, можно почитать тут) из нашей картинки с определённым шагом для производительности (если идти по каждому, можно словить нефиговые лаги) и использовал эти позиции для формирования наших частиц. А на фоне просто-напросто дополнительный SKEmitterNode.
Ещё прикрутил реакцию на наклон девайса из стороны в сторону и вверх-вниз для небольшого эффекта смещения.
📖 А для трансформа кнопок добавил немного фич из новой 26 оси (в этом посте писал подробнее).
Весь код и рабочий пример по традиции уже доступен в закрытой базе:
Можно подписаться в ⭐️ в телеграме или 💰 с приятными условиями на бусти.
🧠 Что вы получите уже сейчас: ➡️Карта изучения Swift Concurrency (примеры, разбор каждого уровня, полезные советы) ➡️Вопросы на чтение кода (несколько уровней: простых, посложнее) ➡️Многопоточность ➡️DispatchQueue: практические вопросы ➡️Swift Concurrency ➡️Алгоритмы: терминология и примеры + путь Яндекс Coderun (разбор нескольких десятков задач) ➡️Память: ARC, side table, флаги, утечки ➡️Результаты зарплатного опроса в нашем канале + сравнение с европейскими реальными зарплатами в iOS ➡️Разбор подходов к анимациям и лучшие паттерны (классические способы, Metal, комбинации - все подкреплено кодом) ➡️Утечки памяти в Swift: что с ними делать, как предотвратить? ➡️Навигация в SwiftUI: типы, отличия, разбор неочевидных моментов😃 iOS Dev
Available now! Telegram Research 2025 — the year's key insights 
