iOS Dev
7.55K subscribers
952 photos
69 videos
1 file
1.08K links
🍏Канал об iOS-разработке, необычных подходах и решениях.
👨‍💻Автор: Виктор Грушевский (@Viktorianec)
Темы:
⭐️ Подготовка к собеседованиям.
⭐️ Архитектуры и алгоритмы.
⭐️ Код. Много кода.

⚒️База знаний: https://boosty.to/ios_dev

#ios #mobile #swift
加入频道
Вышел Xcode 16.3 с нативной интеграцией вайб-кодинга!

Ночью вышел Xcode 16.3 и Swift 6.1, а вместе с ним и новый режим программирования.

На этой неделе в Европе официально разрешили Apple Intelligence и Тим Кук просто шокировал общественность, написав в X:

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

Буквально месяц назад Сергей Брин призвал ходить коллег в офис и работать 60 часов в неделю, но Apple сыграли на опережение как всегда. Разработчики в Купертино сидели по 120 часов с понедельника по субботу, приходя в 4 утра.

Новая инновация уже вызвала целую волну сокращений в Кремниевой долине и даже затронула бигтехи в РФ.

Сообщества с десятками тысяч читателей уже запустили курсы по подписке, как обойти новые процессы собеседований.

Теперь они предлагают работать и скручивать опыт, ведь как известно, для работы с новым ИИ теперь необходимо как можно меньше навыков. Чистое, незамутнённое алгоритмами сознание теперь имеет преимущество перед разработчиками с 10+ опыта.

Тим Кук добавил, что новый режим стал частью долгосрочного плана и подчеркнул, что канал iOSDev всё знал ещё два года назад.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Современные практики для работы с URL в Swift

Использование современных API в Foundation для построения (и дальнейшей работы) с URL не только упрощает наш код, но и снижает риск возникновения ошибок и возможных крашей.

📖 В своей статье Джон Санделл разбирает импакт от StaticString, макросов, как прийти к виду let url = #staticURL("https://yangx.top/iosdev"), например, а также опции построения сложных запросов с помощью фич из iOS 16.

Кстати, про особенности и свойства URLSession можно узнать из этого поста.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Эффект свечения текста в комбинации с numericText

Показал пример несложной анимации, при этом довольно приятной по ощущениям (нужен массив с несколькими цветами, несколько теней и contentTransition с numericText).

Код этого и других примеров (в том числе с Metal доступен 💰тут и ⭐️ в телеграм).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
WWDC25

К сожалению, в этом году лотерея была не на моей стороне. С другой стороны - будет больше времени на то, чтобы детальнее рассмотреть все фичи.

🐱 Кстати, если кто планирует ехать, в эти дни в Сан-Франциско будет как минимум CommunityKit-конфа и OneMoreThing (если её решатся провести снова).

А мне пока остаётся смотреть на старые фотки из Apple Visitor Center.

Если кому-то выпало нормально очков удачи и вы выиграли билет на ивент, поделитесь радостью в комментариях)

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как на самом деле работает Swift Concurrency

📖 Виталий Батраков в своём блоге рассказывает о том, что такое асинхронные функции, как создавать и работать с Task и не только.

Например, в статье разбираются Default concurrent/Serial/Main executors и как именно они формируют общую картину.

🔗 Напомню, в канале есть и глоссарий по Swift Concurrency.

Кстати, здесь можно проверить свои силы в вопросах на примерах кода (в приложении часть из них тоже есть).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с модификатором task в SwiftUI: примеры, особенности, приоритеты

➡️ Модификатор task можно использовать в качестве инструмента для выполнения асинхронного кода.

Как рекомендует автор следующего материала, стоит задуматься о применении этого модификатора в частности для случаев, когда есть комбинация отдельных блоков onAppear и Task.

📖 В этой статье рассмотрены различные опции использования task в реальном проекте.

🛠 А вот тут можно посмотреть на этот проект.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
SharingGRDB — альтернатива для SwiftData от авторов Point-Free

По факту это слияние либы Sharing и GRDB.swift (от Гвендаля Руэ), в котором есть целый набор инструментов, которые могут заменить многие сценарии использования SwiftData.

SharingGRDB даёт прямой доступ к базовому SQLite (включая джойны, aggregate-запросы и многое другое).

📖 Документация и примеры запросов.

Примеры проектов:

1️⃣ Case Studies - примеры, показывающие фичи либы.
2️⃣ SyncUps - по факту ребилд приложения Scrumdinger от Apple.
3️⃣ Reminders - приложение с напоминаниями, списками и тегами.

🔗 Ссылка на репозиторий.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Гайд по работе со SwiftUI Alert + примеры

Работа с алертами в SwiftUI немного отличается от привычного способа в UIKit (но это не означает, что этот процесс сложнее).

📖 В несложном туториале разобраны примеры показа обычных алертов, обработки действий и добавления локализации.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Где Swift Assist 😡

Вышедший буквально вчера отчёт от The Information раскрыл много деталей касаемо Apple Intelligence в целом (и затронул множество деталей разработки внутри компании).

Оказывается, что практически ничего из того, что было показано на прошлом WWDC, не было реализовано.

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

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

Ах да, вот забавный сайт с состоянием доступности Swift Assist.

Получается, ждём WWDC25, где шутка перестанет быть шуткой?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Futuristic movement - шейдер имитации движения в космосе

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

🧑‍💻 В iOS IQ используется один из стилистически связанных warp-эффектов (статья есть и в открытом доступе), а в этот раз делюсь реализацией для движения с искривлением в пространстве.

Вы могли видеть разные вариации использования во многих фильмах 📺.

Впрочем, можете и сами попробовать написать на Swift (видос на шаттерстоке за 200 евро и неплохой способ на shadertoy).

🛠 Код на SwiftUI + Metal уже доступен для читателей: 💰в бусти и ⭐️ в телеграм.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Основная функция приложения

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

В музыке - это прослушивание чёртовых песен или подкастов.
В такси - как доехать из точки А в точку Б.
В мессенджерах - разговор с друзьями или чтение каналов.

К сожалению, эта тенденция сейчас проецируется и накрывает веером целые секторы, области приложений.

Суперприложения?

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

Я намеренно умалчиваю возможные проседания по производительности, да и длительность запросов к серверу иногда вызывает вопросы.

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

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

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

Наша с вами цель — упрощать жизнь пользователей и использовать технологии во благо.

А не встраивать ещё одну рекламу, чтобы посмотреть рекламу.

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

Всегда должна быть возможность простого сценария.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Приложение для тренировок для WatchOS с HealthKit + SwiftUI

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

Получасовые подключения и копирование символов, потеря аттача в рандомные моменты, ограничения по фичам и так далее.

В своё время в телеге даже был рекордный приз для мобил именно в контесте для Watch OS (вроде около $20 000 за первое место).

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

Поэтому каждый пример завершённого (или доведённого до логической отсечки) приложения - это довольно ценная информация.

Например, для тренировок Strava сейчас едва ли не монополист (но может вы знаете и другие приложения).

В проекте ниже 0Itsuki0 делится своим опытом для трека воркаутов:

1️⃣ SwiftUI: простое приложение для тренировок с HealthKit (часть 1)
2️⃣ SwiftUI: чтение данных из HealthKit
3️⃣ SwiftUI: разделение тренировки на составляющие

🛠 Сам проект доступен на GitHub.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Использование ключевого слова Swift defer в контексте async

ℹ️ Про defer (в том числе с примерами использования) в канале был пост ранее.

И несмотря на то, что изначально это не всегда кажется полезным, при написании современного Swift-кода использование defer может быть оправдано.

Например, когда есть несколько потенциальных точек выхода внутри наших функций и замыканий - и особенно при написании кода, в котором юзаем throws или при использовании async/await.

📖 В этой статье разобрано несколько таких случаев (от соединения с базой данных до выполнения задач по загрузке инфы).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Акторы в Swift - для чего они вообще нужны?

Актор — это ссылочный* тип, подобный классу, созданный для безопасного управления изменчивым состоянием в многопоточной среде.

Введенные в Swift 5.5, акторы помогают разработчикам писать потокобезопасный, и что не менее важно, предсказуемый код при работе с асинхронными задачами.

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

* Разбор value и reference type c подборкой вопросов есть тут: 💰 Boosty💬 Telegram.

А в канале можно ещё раз освежить знания с помощью глоссария Swift Concurrency.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM