iOS Dev
7.83K subscribers
1.05K photos
96 videos
1 file
1.23K links
👨‍💻Автор: Виктор Грушевский (@Viktorianec)

⚒️ База: https://boosty.to/ios_dev | 🤖 @iOSIQBot | https://iosiq.ru

🍏Канал об iOS-разработке, алгоритмах и архитектурах

⭐️ Подготовка к собесам

⭐️ Код. Много кода.

#ios #mobile #swift
Download Telegram
Сегодня выходит iOS 26 - что можно обновить в рабочих проектах?

Хотя для большинства приложений принято поддерживать 2 последние мажорные версии, по результатам опроса на многих проектах таргет указан аж на 15 ось (и иногда даже ниже). На нашем рабочем до сих пор минималка 15, но пора бы тоже повысить.

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

Xcode

➡️ Все изменения Xcode 26 RC
➡️ Автогенерация Playground
➡️ Сессия на WWDC об изменениях в Xcode 26
➡️ Разбор двух фич в новом Xcode: установка global actor isolation в MainActor.self, включение Approachable concurrency.

Swift

➡️ Обзорный пост по WWDC25 (Swift, Память, Инструменты)
➡️ Изучение изменений concurrency в Swift 6.2
➡️ Использование памяти в Swift 6.2 и возможности для повышения производительности
➡️ Что нового в Swift 6.2 (помимо обновлений, связанных с параллелизмом)
➡️ Что изменилось в работе со строками в Swift 6.2
➡️ Default Actor Isolation in Swift 6.2

Стоит обратить внимание

➡️ Карта изучения Swift Concurrency
➡️ Как мигрировать UIKit-интерфейс на scene-based в iOS
➡️ Огромный обзорный пост по всем изменениям UIKit в iOS 26
➡️ Global actor в Swift Concurrency на реальных примерах
➡️ Все новые фреймворки iOS 26

Когда шутка зашла слишком далеко

➡️ Реализация мема: @escaping @Sendable @MainActor @autoclosure () async -> Void

Ах да, пора ли переходить на Swift 6 в 2025 году?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
32247💯7❤‍🔥4👍3🔥1🏆1
🚀 Swift 6.2 уже доступен

📖 Самые важные изменения здесь и в карточках.

Можно ещё раз взглянуть на InlineArray и Span, познакомиться с Subprocess, узнать, что поменялось в NotificationCenter и многое другое.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5❤‍🔥3511💯6👍3🍓221🔥1🏆1
Как отключить Liquid Glass для iOS-приложения при использовании новых SDK в iOS 26

Всё просто: добавьте в plist проекта UIDesignRequiresCompatibility в YES.

Но это решение вероятно сработает ровно до 27 iOS, так как Apple уже обещает его задепрекейтить.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥16116🏆52👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Сфера Фибоначчи на Metal + SwiftUI

Наложение решётки Фибоначчи (она же золотая спираль или просто сфера Фибоначчи) на поверхность сферы может оказаться неплохим математическим челленджем, а ещё весьма быстрым и эффективным способом распределения точек.

Например, про филлотаксис и одну из загадок Да Винчи я писал уже в канале - обязательно загляните.

А сегодня делюсь анимацией, которую можно сделать с помощью доступных фич Metal уже сейчас (конечно, с поправкой на производительность).

📖 Кстати, на хабре можно посмотреть, как повысить эффективность распределения точек.

А в 💰 бусти и ⭐️ в телеграме вас уже ждёт код реализации (этого и многих других необычных эффектов).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
721🔥16❤‍🔥6💯221👍1
Вышла SQLiteData 1.0 от создателей PointFree: альтернатива SwiftData с CloudKit-синком и шерингом

🛠 Среди заявленных фич на GitHub:

- Создание моделей с помощью структур и перечислений Swift.
- Типобезопасные и схемобезопасные запросы для фетча данных.
- Высокопроизводительный декодер SQLite.
- Можно юзать property wrappers, аналогичные @Query в SwiftData (работает не только в SwiftUI, но и в целом в @Observable-моделях и UIKit-контроллерах).
- Прямой синк с CloudKit.
- Поддержка iCloud-шеринга для обмена инфой между юзерами.
- Основано на SQLite.

📖 Большой обзор с примерами - тут, а полная документация - здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
929👍8🔥6🍓4🤯3211
Как использовать [weak self] в Swift Concurrency Task?

Donny Wals рассматривает кейсы, которые помогут предотвратить утечки памяти и пытается ответить на несколько вопросов.

➡️ Основы использования [weak self] в completion handlers.
➡️ Использование [weak self] и немедленное развертывание внутри таски.
➡️ Есть ли проблема при использовании guard let self при старте задачи.
➡️ Предотвращение strong self внутри задачи.
➡️ Как использовать [weak self] в более длительных задачах.

📖 Статью целиком можно прочитать здесь.

А вот тут есть большой разбор проблем с утечками памяти (классических примеров и способов поиска).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
41611👍7🔥5💯41
🎉 Выпущено в релиз обновление iOS IQ - с новым режимом и поддержкой iOS 26

Я специально дождался от эпла, пока они зарелизят новую ось, чтобы чекнуть стекло в продакшне. Несколько главных разделов уже обновлено, какие-то мелочи ещё в процессе.

Что из мажорных изменений?

- Полноценный новый боевой режим «Исправь и собери код». Попробовал проверить, насколько вообще реально решать головоломки с кодом, пришёл к выводу, что собрать рабочий варик из хаоса даже 15 строк может быть утомительно - поэтому примерно этим размером и ограничил (рекомендую затестить дзен-рандом и не используйте подсказки, это не наш путь).
- Новый блок вопросов по многопоточке.
- Обновил несколько существующих веток с темами, добавил практически в каждую по несколько новых задач.

Был удивлён, что в даже в RC-версии Xcode завезли проблему с компилированием кода, если в проекте Metal (а у нас он есть), потратил наверное час, чтобы корректно зааттачить нужный тулчейн - если у кого-то есть такая же проблема, вот ветка.

🏠 Скачайте приложение в AppStore - и поставьте оценку, пожалуйста.

* кстати, бот также обновлен, удалил пару дублей в опциях и добавил несколько новых вопросов.

Пишите в личные сообщения канала (кнопка в телеге слева снизу), если вы хотели бы увидеть новые режимы или что-то ещё, я всегда всем отвечаю.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
18❤‍🔥16🔥87💯22👍1🍓1
Кажется, пора внести ясность

Бизнесу не важно, что у вас под капотом: насколько ваш код красив и удобен в саппорте в будущем, как именно вы хэндлите все сценарии ошибок в непростых сценариях или насколько тяжелые задачи решаете, когда деливерите фичи.

Все мы хотим проводить рефакторинг! А какой разработчик не хочет?

Ведь тут как с автомобилем - вроде и едет, и тормоза в порядке, ну и что, если там где-то тарахтит или стучит, стоит ли всегда чекать шрус?

Напомню, что есть полезное правило трёх.

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

Поэтому часто можно услышать от продактов или архитекторов (кому повезло и у них они есть на проекте) - что давайте сделаем фичу, а зарефакторим потом, в следующих спринтах когда-нибудь.

В такой момент важно не пропустить вспышку, когда дальнейшее наслаивание логики может поломать слишком многое внутри.

И в такой момент жизненно важно для проекта остановиться.

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

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

Так бывает не всегда.

Зато вы после проведённого рефакторинга сможете спать спокойно.

А вот стоит ли оно таких усилий - решать вам и вашей команде. Ведь многие проекты существуют и прекрасно себя чувствуют на стадии и так сойдёт.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍2310❤‍🔥52🔥2💯2🤝1
Почему проекты на Swift сталкиваются с трудностями (и как их преодолеть)

📖 У Tuist вышел разбор, в котором объясняется не только то, почему в крупных Swift-приложениях начинаются типичные проблемы, среди которых и медленные билды, и нестабильные тесты, но, например и то, как справиться со всем этим не прибегая к кардинальным изменениям вроде перехода на React Native или помощи Bazel.

Про React Native это отсылочка к недавнему разбору о том, как Shopify взял и перевёл все мобильные приложения на React Native. Хотя у всего есть своя цена.

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

Но вообще в статье есть важные поинты, на которые стоит обратить внимание и посмотреть, можно ли это изменить у вас на проекте:

- Безусловно, одним из факторов для возможного преодоления сложностей они считают модуляризацию.
- Время сборок. Тут не обошлось и без их паблик-дашборда.
- Работа с тестами и разбор флагов.
- Анализ сборок и выводы. Нельзя не вспомнить и про xcbeautify.
- Derived Data. Рассматривают и те проблемы, что есть сейчас, и заглядывают в будущее. На самом деле, Apple уже работает над подходом, называемым хранилищем с адресацией по содержимому и явными модулями, к которому они постепенно подталкивают пользователей.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥15107👍5🏆1
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥1277❤‍🔥53👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация алгоритма для навигации по метро Токио на Swift

В необычном докладе Крис рассказывает не только о способах получения следующих доступных станций в метро, но и о связывании инфы с Dynamic Island.

Сам проект использует два типа данных: статику от жд-системы и GPS в реальном времени от юзера.

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
917🔥10🏆4👍2🤯2🍓2👏1💯1
Вышла первая версия Swift Configuration - новый инструмент чтения конфигов от Apple

В первую очередь либа преднозначена для экосистемы Swift-серверов, где конфиг часто считывается из нескольких источников. Но не только. Среди основных преимуществ:

➡️ Появился единый API для чтения конфигураций в приложениях и библиотеках.
➡️ Быстрый старт с поддержкой environment variables, аргументов, JSON/YAML и in-memory данных.
➡️ Есть опция создавать свои провайдеры конфигураций с открытым протоколом ConfigProvider.

Новая либа пригодится и в инструментах командной строки, и в тех приложениях и библиотеках, где нужно гибкое управление конфигурацией.

📖 Вводный пост здесь, примеры на GitHub, а вся документация (и кейсы использования) лежат вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
514🔥9👍6❤‍🔥4🤯1💯1