Swift Actors: 6 подводных камней, которые подстерегают даже опытных разработчиков
Когда Apple представила акторы, среди обещаний особенно выделялось: «конец проблемам с гонками данных». Реальность оказалась гораздо сложнее.
После ряда экспериментов с акторами Рафал Дубиэль составил список ловушек, в которые регулярно попадают даже опытные разработчики.
Некоторые из них плохо документированы, а другие активно вводят в заблуждение.
📖 Целиком статью можно прочитать вот тут.
😃 iOS Dev
Когда Apple представила акторы, среди обещаний особенно выделялось: «конец проблемам с гонками данных». Реальность оказалась гораздо сложнее.
После ряда экспериментов с акторами Рафал Дубиэль составил список ловушек, в которые регулярно попадают даже опытные разработчики.
Некоторые из них плохо документированы, а другие активно вводят в заблуждение.
📖 Целиком статью можно прочитать вот тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥24 11✍4👏2💯2👍1
Универсальность использования Tasks в Swift
Если вы уже давно занимаетесь разработкой для платформ Apple, ваше понимание «параллелизма» может уходить корнями к эпохе Grand Central Dispatch. А если вы в разработке для яблочных девайсов ещё дольше, то как заметил Макс Зелеманн, то даже и к pthreads.
В этой небольшой, но интересной статье рассматриваются моменты, которые могут быть не совсем очевидны при работе с тасками.
📖 Вот выводы, к которым в итоге пришёл автор статьи (но рекомендую посмотреть и сам пост):
😃 iOS Dev
Если вы уже давно занимаетесь разработкой для платформ Apple, ваше понимание «параллелизма» может уходить корнями к эпохе Grand Central Dispatch. А если вы в разработке для яблочных девайсов ещё дольше, то как заметил Макс Зелеманн, то даже и к pthreads.
В этой небольшой, но интересной статье рассматриваются моменты, которые могут быть не совсем очевидны при работе с тасками.
📖 Вот выводы, к которым в итоге пришёл автор статьи (но рекомендую посмотреть и сам пост):
➡️ В своей простейшей форме они представляют собой замыкания для длительных операций в фоне.➡️ Они предоставляют асинхронный контекст, позволяя вызывать асинхронный код.➡️ Если хранить дескриптор, можно ждать завершения в другом месте или отменить задачу вовсе, когда она больше не нужна.➡️ Если вы передаете дескриптор задачи, он служит в качестве промиса (будущего) для значения результата.➡️ Поскольку задачи являются потокобезопасными, они также служат в качестве механизмов синхронизации вокруг их комплишна и результата.
Please open Telegram to view this post
VIEW IN TELEGRAM
19🔥11 8👏6👍3
Разбор архитектуры SwiftUI в 2025 году: MVVM, MVC или TCA
Выбор правильной архитектуры для SwiftUI аналогичен выбору правильной программы тренировки.
Именно с такими словами выступает автор следующей статьи.
📖 А его взгляд на то, что стоит использовать - можно почитать вот здесь.
😃 iOS Dev
Выбор правильной архитектуры для SwiftUI аналогичен выбору правильной программы тренировки.
Каждый эксперт утверждает, что его метод лучший, но если попробовать одно или другое руководство, есть ненулевой шанс, что внезапно ваш проект разрастётся неизвестно во что.
Именно с такими словами выступает автор следующей статьи.
📖 А его взгляд на то, что стоит использовать - можно почитать вот здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥23 9👏4 2⚡1👍1💯1🏆1
iOS Dev
Просто напоминание, в Матрице плохих парней называли агентами. 25 лет спустя они уже здесь.
Тем временем в Xcode 26.3 рассказали, как работать с агентами
В новом видео за 5 минут рассказывают, как юзать OpenAI Codex и Claude Agent, для совместной работы над сложными многоэтапными задачами.
Например, как Xcode позволяет агентам создавать проекты, запускать тесты и искать документацию Apple — и все это через Model Context Protocol.
📺 А вот и ссылка!
😃 iOS Dev
В новом видео за 5 минут рассказывают, как юзать OpenAI Codex и Claude Agent, для совместной работы над сложными многоэтапными задачами.
Например, как Xcode позволяет агентам создавать проекты, запускать тесты и искать документацию Apple — и все это через Model Context Protocol.
📺 А вот и ссылка!
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥23👍9 6👏2🆒2
This media is not supported in your browser
VIEW IN TELEGRAM
3D-диаграммы в iOS 26 в 3 строчки кода
В 26 оси появилась крутая история с возможностью добавить 3D-диаграммы буквально в пару строк (можно юзать SurfacePlot или 3D-инициализаторы для PointMark, RuleMark, и RectangleMark).
Например, можно сделать так:
А для интерактивного управления, достаточно всего лишь использовать Chart3DPose с указанными значениями азимута и наклона.
А помните, всего несколько лет назад для этого надо было крутиться со сложной математикой и SceneKit.
Расширенный код (включая приятный премиум-эффект) и многое другое:💰 На бусти и ⭐️ в телеграме.
😃 iOS Dev
В 26 оси появилась крутая история с возможностью добавить 3D-диаграммы буквально в пару строк (можно юзать SurfacePlot или 3D-инициализаторы для PointMark, RuleMark, и RectangleMark).
Например, можно сделать так:
Chart3D {
SurfacePlot(x: "x", y: "y", z: "z") { x, z in
sin(2 * x) * cos(2 * z)
}
}
А для интерактивного управления, достаточно всего лишь использовать Chart3DPose с указанными значениями азимута и наклона.
А помните, всего несколько лет назад для этого надо было крутиться со сложной математикой и SceneKit.
Расширенный код (включая приятный премиум-эффект) и многое другое:
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥25 7🤩4👍3👏1💯1🏆1🎄1
Combine официально всё
Артем Новичков подсветил, что в AgentSystemPromptAddition в Xcode 26.3 есть такая строка:
Маякни реакцией 🎉, если ожидаемо.
😃 iOS Dev
Артем Новичков подсветил, что в AgentSystemPromptAddition в Xcode 26.3 есть такая строка:
Avoid using the Combine framework and instead prefer to use Swift's async and await versions of APIs instead.
Маякни реакцией 🎉, если ожидаемо.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉192🤯33✍12 5👍3🔥3🏆2❤🔥1🤗1 1
🤯 Telegram превращается в VibeGram?
🛠 В десктопном клиенте на GitHub появились упоминания claude/codex и правил для агентов.
Уточнение: в комментариях добавили, что в iOS-клиенте это появилось куда раньше.
😃 iOS Dev
🛠 В десктопном клиенте на GitHub появились упоминания claude/codex и правил для агентов.
Уточнение: в комментариях добавили, что в iOS-клиенте это появилось куда раньше.
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥26🤯15 7❤🔥4 3👍1
Где iOS-разработчик быстрее деградирует?
Anonymous Poll
11%
В аутсорсе (частое переключение контекста, да и пилишь однотипные экраны почти всегда)
21%
В небольшой компании с одним продуктом (так как не изучаешь новые технологии)
8%
В стартапе (плохой код ради скорости)
27%
В бигтехах (долгие согласования, одна фича за год)
33%
Другое/посмотреть ответы
Please open Telegram to view this post
VIEW IN TELEGRAM
8😁132🤣40🔥12 2👍1🎉1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация эффекта InvisibleInk из iMessage на SwiftUI + Metal
Один из приятных эффектов, который я попробовал повторить, можно реализовать с помощью использования частиц или просто шума с помощью Metal.
Для этого можно воспользоваться симплексным шумом в комбинации с блюром и расчетом отклонения от заданной позиции. Близко к сути эффект с лупой, про который я тоже писал в нашем канале.
На выходе чекаем текущую позицию, трекаем жесты и считаем, насколько мы отклонились от предыдущей точки.
Вот такая красота получается (кстати, работает и на статик-картинке, и на любой другой вьюхе, я подрубил один из эффектов, о которых тоже рассказывал ранее).
Весь код, все примеры и многое другое:💰 На бусти и ⭐️ в телеграме.
😃 iOS Dev
Один из приятных эффектов, который я попробовал повторить, можно реализовать с помощью использования частиц или просто шума с помощью Metal.
Для этого можно воспользоваться симплексным шумом в комбинации с блюром и расчетом отклонения от заданной позиции. Близко к сути эффект с лупой, про который я тоже писал в нашем канале.
На выходе чекаем текущую позицию, трекаем жесты и считаем, насколько мы отклонились от предыдущей точки.
Вот такая красота получается (кстати, работает и на статик-картинке, и на любой другой вьюхе, я подрубил один из эффектов, о которых тоже рассказывал ранее).
Весь код, все примеры и многое другое:
🧠 Что вы получите ещё, подписавшись:➡️ Карта изучения Swift Concurrency (примеры, разбор каждого уровня, полезные советы)➡️ Вопросы на чтение кода (несколько уровней: простых, посложнее)➡️ Многопоточность➡️ DispatchQueue: практические вопросы➡️ Swift Concurrency➡️ Алгоритмы: терминология и примеры + путь Яндекс Coderun (разбор нескольких десятков задач)➡️ Память: ARC, side table, флаги, утечки➡️ Результаты зарплатного опроса в нашем канале + сравнение с европейскими реальными зарплатами в iOS➡️ Разбор подходов к анимациям и лучшие паттерны (классические способы, Metal, комбинации - все подкреплено кодом)➡️ Утечки памяти в Swift: что с ними делать, как предотвратить?➡️ Навигация в SwiftUI: типы, отличия, разбор неочевидных моментов
Please open Telegram to view this post
VIEW IN TELEGRAM
21🔥20 10🏆7👍2☃1✍1
Please open Telegram to view this post
VIEW IN TELEGRAM
8😁58🤣22🔥8👏3👍1 1
Практический гайд по созданию скриншотов для AppStore с Fastlane
При обновлении приложения часто могут понадобиться новые скриншоты для App Store Connect.
Делать это вручную на нескольких устройствах и на разных языках — утомительно и чревато ошибками.
Но с этим может помочь фича «snapshot» у fastlane, с помощью которой можно автоматизировать весь процесс целиком.
📖 В этой статье описана пошаговая инструкция (от настройки до отладки и загрузки в стор).
Кстати, вот здесь есть большое руководство но настройке идеального пайплайна на базе Fastlane для iOS.
😃 iOS Dev
При обновлении приложения часто могут понадобиться новые скриншоты для App Store Connect.
Делать это вручную на нескольких устройствах и на разных языках — утомительно и чревато ошибками.
Но с этим может помочь фича «snapshot» у fastlane, с помощью которой можно автоматизировать весь процесс целиком.
📖 В этой статье описана пошаговая инструкция (от настройки до отладки и загрузки в стор).
Кстати, вот здесь есть большое руководство но настройке идеального пайплайна на базе Fastlane для iOS.
Please open Telegram to view this post
VIEW IN TELEGRAM
9 16👍10👏6🆒2 2🔥1🏆1🤝1
Clean room design - конец опенсорсу?
Как вы знаете, я неравнодушен, когда дело касается идей/копирайта/повторения.
Оказывается, есть специальный термин, буквально методология создания продуктов, с чем можно сравнить и тысячи поделок, которые сейчас фигачат как на конвейере.
Суть вот в чём: команда разработчиков работает в «чистой» среде, без допзнаний о скрытых/защищенных авторским правом технологиях у своих конкурентов.
Так вот, уже был пример 2025 году, когда MongoDB использовала ИИ-агент для извлечения тысяч строк кода из проекта с копилефтом и с помощью Cursor воссоздала и перелицензировала его под Apache. Команды, использованные для этого, были оставлены в репозитории.
📖 Интересный доклад, в котором рассмотрено, к чему это приведет при большем масштабе, что это значит для опенсорса и для сообщества в целом.
😃 iOS Dev
Как вы знаете, я неравнодушен, когда дело касается идей/копирайта/повторения.
Оказывается, есть специальный термин, буквально методология создания продуктов, с чем можно сравнить и тысячи поделок, которые сейчас фигачат как на конвейере.
Суть вот в чём: команда разработчиков работает в «чистой» среде, без допзнаний о скрытых/защищенных авторским правом технологиях у своих конкурентов.
Это способ копирования дизайна с помощью реверс-инжинирнга, не нарушающий авторских прав и коммерческих тайн, связанных с оригиналом. Он базируется на независимом изобретении и может быть использован для защиты от авторских прав и коммерческих тайн, но не применим при патентных ограничениях (почитать можно тут).
Так вот, уже был пример 2025 году, когда MongoDB использовала ИИ-агент для извлечения тысяч строк кода из проекта с копилефтом и с помощью Cursor воссоздала и перелицензировала его под Apache. Команды, использованные для этого, были оставлены в репозитории.
📖 Интересный доклад, в котором рассмотрено, к чему это приведет при большем масштабе, что это значит для опенсорса и для сообщества в целом.
Please open Telegram to view this post
VIEW IN TELEGRAM
10 12🔥7👏3💯3👍1🤩1🆒1
Зарплаты IT-специалистов во второй половине 2025: рост остановился
💪 Зарплаты разработчиков в Objective-С всё ещё держат пальму первенства, даже с учетом того, что во второй половине 2025 медиана снизилась на 7%, до 355 000 ₽.
На втором месте зарплаты в Elixir — 335 000 ₽, а на третьем в Golang — 320 000 ₽.
Больше всего во втором полугодии 2025 года IT-специалистам платили в «Авито» — медиана 369 000 ₽. Также в пятерке лидеров «Райффайзен Банк», VK и X5 Tech.
🔗 Прошлые исследования Хабр.Карьеры
✅ Сравнение зарплат с европейскими - здесь.
😃 iOS Dev
💪 Зарплаты разработчиков в Objective-С всё ещё держат пальму первенства, даже с учетом того, что во второй половине 2025 медиана снизилась на 7%, до 355 000 ₽.
На втором месте зарплаты в Elixir — 335 000 ₽, а на третьем в Golang — 320 000 ₽.
Больше всего во втором полугодии 2025 года IT-специалистам платили в «Авито» — медиана 369 000 ₽. Также в пятерке лидеров «Райффайзен Банк», VK и X5 Tech.
Please open Telegram to view this post
VIEW IN TELEGRAM
12 20🔥10❤🔥7👍2👏1🤯1🎅1 1
Мы построили мир, который больше не понимаем или почему NASA не может скопировать свой же двигатель
Нашел отличную статью, в которой можно ещё раз посмотреть, как появляется иллюзия контроля и к чему это может привести.
Для себя я вынес интересный термин
А ещё там можно узнать про кайфовую историю, как инженеры формулы-1 снизили уровень хаоса в операционной одного из госпиталей.
Как бы там ни было и к чему нас не привели текущие изменения, важно сосредоточиться на основных постулатах:
🔘 Не забывайте чекать исходный код того, что используете.
🔘 Когда вам продают чудо-технологию, спрашивайте «Как это работает?».
🔘 Поддерживайте Open Source. Делитесь опытом (и своих провалов, и успехов).
🔘 Делать велосипеды - совсем не так плохо, как кажется (и в статье про это как раз есть отдельный раздел).
📖 Почитать её целиком можно на хабре.
😃 iOS Dev
Нашел отличную статью, в которой можно ещё раз посмотреть, как появляется иллюзия контроля и к чему это может привести.
Для себя я вынес интересный термин
tacit knowledge - эдакое знание, которое никак не получится передать через инструкцию.А ещё там можно узнать про кайфовую историю, как инженеры формулы-1 снизили уровень хаоса в операционной одного из госпиталей.
Как бы там ни было и к чему нас не привели текущие изменения, важно сосредоточиться на основных постулатах:
📖 Почитать её целиком можно на хабре.
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥23 9👍5👏3🤯3⚡1🏆1
Использование EventKit для реализации списка напоминаний
Чтобы создать в своем приложении настраиваемые списки напоминаний, можно подрубить фреймворк EventKit и организовать их, например, по контексту, проекту или приоритету.
📖 В этой статье можно посмотреть на пример реализации, создание интерфейса, а также на способ взаимодействия с системными Напоминаниями.
😃 iOS Dev
Чтобы создать в своем приложении настраиваемые списки напоминаний, можно подрубить фреймворк EventKit и организовать их, например, по контексту, проекту или приоритету.
📖 В этой статье можно посмотреть на пример реализации, создание интерфейса, а также на способ взаимодействия с системными Напоминаниями.
Please open Telegram to view this post
VIEW IN TELEGRAM
6 15🔥9👍6👏2🆒1
Как создать инструмент для автоматизации с помощью Swift и ArgumentParser
Несложное руководство, в котором есть пример создания CLI-тулзы с анализом аргументов, асинхронными запросами и примером парсинга JSON.
📖 Статья с примерами доступна тут
😃 iOS Dev
Несложное руководство, в котором есть пример создания CLI-тулзы с анализом аргументов, асинхронными запросами и примером парсинга JSON.
📖 Статья с примерами доступна тут
Please open Telegram to view this post
VIEW IN TELEGRAM
8 12🔥5👏3❤🔥2✍2💯2👍1🆒1
Работа с картами в SwiftUI
Apple ежегодно обновляет API MapKit, добавляя новые функции и позволяя разработчикам работать с картами, адаптируя их под свои приложения.
📖 Например, в этом материале рассмотрено сразу два примера, но в рамках MapKit есть много других интересных модификаторов.
К слову, на WWDC 2025 в видео «Go further with MapKit» было продемонстрировано, как именно прокачали поиск и отображение мест с помощью MapKit, новые API-интерфейсы геокодирования и новый фреймворк GeoToolbox.
🔗 А тут у нас был интересный пост про комбинацию карт и Swift Charts.
😃 iOS Dev
Apple ежегодно обновляет API MapKit, добавляя новые функции и позволяя разработчикам работать с картами, адаптируя их под свои приложения.
📖 Например, в этом материале рассмотрено сразу два примера, но в рамках MapKit есть много других интересных модификаторов.
К слову, на WWDC 2025 в видео «Go further with MapKit» было продемонстрировано, как именно прокачали поиск и отображение мест с помощью MapKit, новые API-интерфейсы геокодирования и новый фреймворк GeoToolbox.
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥11 7👍4👏4💯1
Путь наименьшего сопротивления
Нам всегда хочется выбирать более простой вариант из пула доступных. Не самый правильный или подкреплённый какими-то аргументами, не самый производительный, если так угодно. Нет, самый простой.
Так уж мы устроены.
Решение, на которое нужно потратить силы - чаще всего контринтуитивно. Смириться с тем, что небходимо потратить время на исследование документации или какого-то решения самостоятельно, порой кажется непозволительной роскошью.
Поэтому сейчас в сторе волна однотипных приложений (и миллион ещё на подходе), а процесс откликов на вакансии превращается в битву алгоритмов.
Зачем тратить силы и напрягать мышление, если есть подписка за 20 баксов? Зачем решать сложные задачи, если можно скормить нейронке и получить приемлемый, пусть и посредственный результат?
Знаете, я встречал даже точки зрения, в которых легко можно провести параллель с тем, как аркебузы вытеснили лучников в своё время.
Этот мир мне абсолютно понятен, как говорится. При этом на самом деле ничего кардинально не изменилось.
Умение строить системы все также будет основополагающим, решающим фактором при выборе кандидатов на высокие позиции. Контекст всё также будет важен. Написание кода всё также не самое решающее, что мы закладываем в свою профессию. Более того, это и фактически занимает далеко не всё время. И, как я писал ранее, это всего лишь верхушка айсберга, гораздо важнее процессы внутри.
Не хочется, чтобы в один момент профессия превратилась в:
😃 iOS Dev
Нам всегда хочется выбирать более простой вариант из пула доступных. Не самый правильный или подкреплённый какими-то аргументами, не самый производительный, если так угодно. Нет, самый простой.
Так уж мы устроены.
Решение, на которое нужно потратить силы - чаще всего контринтуитивно. Смириться с тем, что небходимо потратить время на исследование документации или какого-то решения самостоятельно, порой кажется непозволительной роскошью.
Поэтому сейчас в сторе волна однотипных приложений (и миллион ещё на подходе), а процесс откликов на вакансии превращается в битву алгоритмов.
Зачем тратить силы и напрягать мышление, если есть подписка за 20 баксов? Зачем решать сложные задачи, если можно скормить нейронке и получить приемлемый, пусть и посредственный результат?
Знаете, я встречал даже точки зрения, в которых легко можно провести параллель с тем, как аркебузы вытеснили лучников в своё время.
Чтобы стать профессионалом, лучнику приходилось обучаться с самого детства. Тренируя меткость в течение 10 лет, овладевая техниками и навыками шаг за шагом, которые выделяли его на фоне остальных. Но вот пришла эпоха аркебуз, и крестьянина можно было за пару недель обучить владению аркебузой. Дело оказывалось вовсе не в навыках или в том, что аркебуза намного дороже, а в процессе самого обучения.
Этот мир мне абсолютно понятен, как говорится. При этом на самом деле ничего кардинально не изменилось.
Умение строить системы все также будет основополагающим, решающим фактором при выборе кандидатов на высокие позиции. Контекст всё также будет важен. Написание кода всё также не самое решающее, что мы закладываем в свою профессию. Более того, это и фактически занимает далеко не всё время. И, как я писал ранее, это всего лишь верхушка айсберга, гораздо важнее процессы внутри.
Не хочется, чтобы в один момент профессия превратилась в:
Да, вы абсолютно правы, вы случайно спалили токены доступа во внутренний контур. Хотите, покажу ещё 10 вариантов, как не допустить такого в будущем.
Please open Telegram to view this post
VIEW IN TELEGRAM
21❤🔥18 9🔥7💯5👍1👏1🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
Джуны сразу после курсов с ИИ-резюме пробиваются через автофильтры HR
🤣56😁15🔥8 3👏2👍1