iOS Dev
7.87K subscribers
1.07K photos
107 videos
1 file
1.27K links
👨‍💻Автор: Виктор Грушевский (@Viktorianec)

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

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

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

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

#ios #mobile #swift
Download Telegram
Интеграция функциональности камеры в SwiftUI

Хотя на SwiftUI проще создавать практически любые компоненты интерфейса, для работы с камерой требуются более низкоуровневые возможности AVFoundation.

📖 В этом материале можно посмотреть на пример решения такой задачи.

Для этого в примере используется четыре основных компонента: CameraManager, CameraPreview (для бриджа превью-слоя AVFoundation в SwiftUI через UIViewRepresentable), CameraView - для взаимодействия с камерой и PhotoView (для фотогалереи).

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


😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
815👍7🔥5❤‍🔥321
This media is not supported in your browser
VIEW IN TELEGRAM
Небольшой анонс на счёт приложения iOS IQ

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

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

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

Несмотря на это, я все-таки поэкспериментировал вчера с Foundation Models - и думаю, что в каком-то виде (отдельном, с пометкой про AI и то, что вопросы сгенерированы) этот раздел появится.

Небольшая демка уже есть на гифке.

Если вы хотите получить доступ к ранним версиям в тестфлайте, подпишитесь в ⭐️ в телеграме или 💰 на бусти.

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

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


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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2114🔥8❤‍🔥5🍓4😎2👍1🏆1🤝1
Вышло новое интервью с Крисом Латтнером - от Swift до Mojo

Мне понравился момент, когда он сказал буквально следующее:

До Swift я пытался создавать свои пет-проекты на Objective-C, но меня раздражали квадратные скобки и было трудно разобраться с указателями и крашами. Мне даже казалось, что я недостаточно хорош для создания приложений.


Поэтому он создал свой язык программирования!

💪 Вот это я понимаю кардинальное решение проблемы. Красиво, Крис, вопросов нет.

📺 Вообще в интервью много интересных моментов:

➡️ Про компиляторы в начале 2000
➡️ Почему Крис создал LLVM
➡️ Процесс создания языка программирования
➡️ Swift Playgrounds - как программирование стало более доступным
➡️ Какие проблемы решил Swift и какой технический долг появился
➡️ Недостатки компилятора
➡️ Что можно почерпнуть из изучения компиляторов

📺 А прошлое интервью можно посмотреть здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1024❤‍🔥11👍75🔥3🤩3🍓21💯1🫡1
Что нового в Swift - новый раздел на swift.org

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

В октябрьском выпуске освещаются основные моменты конференции Server Side Swift, выпуск основных пакетов и последние пропозалы Swift Evolution.

Например, там есть ссылка на интересный доклад Бена Коэна:

📺 Юзабилити и производительность в Swift

Бен рассказал о том, как развивается язык и как именно он позволяет достичь максимальной производительности при всех тех изменениях, что происходят.

Затронули и InlineArray и Span, и многое другое.

📖 Целиком дайджест можно почитать здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
913👍8🔥63👏32
Кстати, вышел Pluribus - визионерское высказывание Винса Гиллигана, автора шикарных сериалов «Во все тяжкие» и «Лучше звоните Солу».

Преамбула сериала заключается в том, что весь мир буквально охвачен счастьем, но главная героиня видит в этом огромную опасность для человечества - это не спойлер, лишь теглайн с imdb/кинопоиска.

Хотя главная мысль куда шире и диапазон смыслов подобно лавине накатывает ещё в первой серии.

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

К слову, ещё здесь персонажи соглашаются со всем подобно ИИ-агентам, которые так и наровят сообщить герою: «Да, вы абсолютно правы, съешь ещё этих мягких французских булок, да выпей чаю».

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
8❤‍🔥228🔥7💯3👍221🫡1
Советы по оптимизации скорости и производительности приложений от Apple

📺 Опубликовали видео с прошедшей онлайн-сессии Apple, на которой рассказали о нескольких подходах к работе и с Liquid-дизайном, и о том, как использовать некоторые из доступных нам инструментов.

🕔 Про оптимизацию энергопотребления при использовании нового дизайна

🕜 Генерация быстрых ответов с использованием Foundation Models
Это мне пригодится.

🕢 Глубокое погружение в перфоманс SwiftUI

🕗 Инструменты производительности в Snap

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
911❤‍🔥6👍6👏4🔥1💯11
This media is not supported in your browser
VIEW IN TELEGRAM
Проектирование и создание кастомных лэйаутов в SwiftUI

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

🛠 Например, в этом приложении реализованы кнопки для голосования за определенный тип питомца (а ещё количество голосов и относительный рейтинг в лидерборде). Оно также показывает аватары питомцев, расположенные в соответствии с текущим рейтингом.

А ещё там разобраны следующие моменты:

➡️ Принцип работы ViewThatFits (кстати, в канале есть пост)
➡️ Повышение эффективности лэйаута с помощью кэширования
➡️ Анимация переходов между различными лэйаутами

🔗 А ещё в канале можно посмотреть на этот ресурс (в котором наглядно показано, как именно влияют на отображение определённые параметры при создании лэйаута).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
911💯55👍4❤‍🔥21🔥1
Совет по производительности для List+ForEach в SwiftUI

Если ваш список лагает, то здесь может помочь параметр -LogForEachSlowPath (ставим в YES), чтобы SUI логировал ворнинги, как для этой ситуации.

🛠 Можно юзать и напрямую через UserDefaults, пример - вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
51613🔥8👍4👏3❤‍🔥2💯1🫡1
This media is not supported in your browser
VIEW IN TELEGRAM
Новый раздел в Swift Tutorials от Apple: работа со SwiftData

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

Показывают, как настроить проект, как добавить Photo Picker, создать контейнер данных, а ещё реализовать возможность сохранения/отмены изменений.

📖 Весь урок доступен здесь.

🛠 Стартовый проект для работы - вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
616👍9🔥84👏2🤩1
Как ИИ-слоп влияет лично на меня

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

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

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

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

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

Или как там, великие художники воруют?

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
51❤‍🔥17👍10🔥8🍓431
Новая партнерская программа App Store Mini Apps

📖 Сегодня анонсировали партнёрку Mini Apps (созданных, например, на HTML5 и JavaScript).

Предлагают и сниженную комиссию в размере 15% от продаж соответствующих покупок в приложениях.

Правда, для получения этого бонуса разработчики должны использовать API Declared Age Range и API Advanced Commerce.

➡️ Полные требования, критерии получения доступа к программе и Q&A опубликованы здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
696🔥5❤‍🔥22👍1💯1🍓1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Прокачали автодополнение кода в Swift

Проект, представленный Ахмедом Эльрефаи в рамках Google Summer of Code, расширяет реализацию протокола языкового сервера (LSP) для языков Swift и C.

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

VS Code, Neovim, IntelliJ IDEA, Vim (редакторы с поддержкой LSP) получат профит от этих улучшений, другие преимущества описаны тут.

📖 Эта работа уже вошла в проект SourceKit-LSP и будет включена в будущую версию тулчейна Swift.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
922🔥20👍831👏1💯1
Как улучшить производительность SwiftUI-приложений

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

Я уже делился огромной подборкой инструментов, советами инженеров Apple и многими неочевидными историями, как ускорить отклик вашего приложения. А также новыми доступными инструментами.

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

Ещё раз напомнил о флаге LogForEachSlowPath, примерах с async/await и без кэширования не обошлось.

Если вы делаете первые шаги в SwiftUI (или в целом хотите узнать немного больше), то подписывайтесь:

💰 На бусти и ⭐️ в телеграме.

А пока вы ещё не решились, рекомендую стартовать с этих сессий:

📺 Демистификация и устранение недочетов на этапе рендеринга

📺 Поиск проблем с анимацией пользовательского интерфейса

📺 Использование инструментов для поиска неполадок

🧠 Что вы получите, подписавшись сегодня:
➡️Разбор нескольких сотен вопросов на сложные темы
➡️Вопросы на чтение кода
➡️Многопоточность
➡️DispatchQueue: практические вопросы
➡️Swift Concurrency
➡️Алгоритмы: терминология и примеры
➡️Память: ARC, side table, флаги, утечки
➡️Множество анимаций, шейдеров и не только
Подписаться можно на 💰 бусти и ⭐️ в телеграме.


😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
912🔥7🏆42👍2🆒22
Лучшие доклады конференции Pragma Conf 2025

#Pragma Conference — международная конференция, полностью посвященная разработке приложений для iOS, macOS, watchOS, visionOS и tvOS. Она прошла всего пару недель назад, а доклады уже выложили, и там много интересного:

📺 Swift 6.2 и миграция приложения
Антуан делится тем, как параллелизм может решить ключевые проблемы разработчиков.

📺 The Attribute Graph: невидимая рука SwiftUI
Много деталей про систему, буквально лежащую в основе SwiftUI.

📺 Альтернативные маркетплейсы на iOS: интеграция и инновации
Тема, которая может пригодиться крупным игрокам рынка: рассмотрены вопросы настройки, этапы разработки, советы по тестированию и многое другое.

📺 Священный секрет скорости нашего приложения
Маттео Раттотти и Константин Ерохин делятся необычными способами, которые повысили производительность для всех пользователей.

📺 Радости и трудности незрячего программиста
Аркадиуш Свентницкий рассказывает о доступности с точки зрения разработчика. Этот доклад можно только слушать.

📖 Все доклады можно посмотреть здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
714🔥7👍43🤩1💯1🏆1
Нужно ли высшее образование разработчику в 2025 году?
Anonymous Poll
47%
Да
53%
Нет
59❤‍🔥6🔥4💯42👍2🍓221
This media is not supported in your browser
VIEW IN TELEGRAM
Kinetics - опенсорсная либа для эмуляции реальной физики в анимациях SwiftUI

Основана на Swift 6 (с соответствием требованиям параллелизма) и добавляет естественности взаимодействию пользователя с приложением.

🛠 Доступна на GitHub (есть демка).

По требованиям к проекту: iOS 15.0+ / macOS 12.0+ (и Swift 6.0+).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
824🔥9❤‍🔥8🎉621👍1
Адаптация гибридного проекта на SwiftUI+UIKit к Liquid Glass

📖 В этой статье описаны принятые решения по рефакторингу для Sheet/Navigation/Popover.

Помимо этого есть пример расчёта размеров для UIBarButtonItem и работа с CABackdropLayer, а также показано, как создать уникальный эффект стеклянного текста с помощью Core Text.

🛠 Все описанное доступно и в проекте на GitHub.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
61311❤‍🔥4💯22👍1🔥1
«Сбер» планирует сократить до 20% сотрудников, признанных неэффективными искусственным интеллектом

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

Греф пояснил, что оценка эффективности проводится с помощью мультиагентной системы. Сокращения планируется завершить к 1 января.


Что думаете, если ИИ начнёт оценивать результаты вашего труда?

У кого-то в компании эта схема уже применяется? Если да, то каким образом?

Считается количество строк в пуллреквесте или количество тасок, передвинутых на доске?

Что лично вы думаете о таких оптимизациях?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🤯44🔥6👍5🍓422❤‍🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Чёрная пятница для iOS Dev - в чём плюсы?

Читатели, которые поддерживают канал не только словом/комментарием или реакцией - это восхитительно, и бустит в буквальном смысле на создание новых полезных инструментов: приложения, бота, роадмапов, подборок, разборов.

Я всегда считаю, что не просто говорить, а делать всегда значит больше, чем просто строить воздушные замки. Лучше одна реализованная фича, чем невероятный проект на 5 лет, к кому никто так и не приступит.

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

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

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

Подготовка к собеседованиям:
- Мок-собесы с публичным доступом (сейчас несколько десятков на русском и английском языках).
- Вопросы для подготовки по секциям (сотни примеров на разные темы)
- Частные узкие темы (с поиском проблем в коде).
- System Design. Мои советы и большая подборка материалов.

Алгоритмы:
- Сложность алгоритмов.
- Разбор десятков задач с контестов (в том числе и от яндекса).
- Популярные методы решения задач (с примерами).

Архитектуры:
- Все паттерны проектирования банды четырёх. Общая информация и примеры реализации на Swift.
- Архитектурные заблуждения.
- Реализация в реальных приложениях.

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

Инструментарий. Полезные советы при работе с Xcode, терминалом и симулятором.

А помимо этого - у всех подписавшихся по умолчанию есть доступ к режиму собеседований в боте и к ранним версиям приложениям iOS IQ.

И это только часть того, что есть уже сегодня.

Подписаться можно на бусти и в телеграме ближайшие 2 недели с приятными условиями.
612🔥106👏2👍1🎉1
Многозадачность и управление приоритетами

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

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

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

Вот только утверждение, что Цезарь делал несколько дел одновременно - все-таки миф, на самом деле речь шла о быстром переключении задач.

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

Поэтому рациональное желание сделать быстрее/лучше при увеличении допустимого пула задач вполне вероятно приведет к увеличению сроков.

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

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

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

«Если проект не укладывается в сроки, то добавление рабочей силы задержит его ещё больше».

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

Да и вообще, написание кода - это лишь верхушка айсберга в продуктовой разработке.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
998❤‍🔥432👍1🔥1💯1