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

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

#ios #mobile #swift
Download Telegram
Как работать со Swift Data и Core Data в фоновом режиме

Хотя SwiftData намного проще в настройке, фреймворк унаследовал многие проблемы Core Data (включая те, которые останавливали многих разработчиков от использования Core Data в своих приложениях).

Одна из самых больших проблем — управление моделями в различных контекстах. Модели Swift Data и Core Data небезопасно использовать совместно в разных потоках (они не Sendable и не thread-safe). Apple даже указывает на это в своем руководстве.

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

Большой гайд по работе со Swift Data есть в нашем канале и вот тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
620👍8🔥33🎄2🎉1👌1
Рисование кастомных фигур в SwiftUI: примеры и код

В SwiftUI Shape-протокол опредеяет контур нашей вью.

Он используется для рисования и проектирования своих собственных фигур или контролов разной сложности

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
714👍8🔥3❤‍🔥221👏1🎉1💯1🎄1
Как работать с passkeys в iOS-приложении

Passkeys используются для аутентификации пользователей без использования пароля (после WWDC 23 Apple даже добавила фразу: При использовании passkey с сервера нечего красть).

Сама пара public + private ключ создается каждый раз при генерации новой учетки.

Чтобы получить доступ к контенту пользователи могут использовать PIN-код или биометрию.

📖 Здесь есть полезный материал о том, как настроить passkeys в вашем приложении и пример реализации на github.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
621👍9🎄4🔥3🎉221🤩1👌1💯1
Проектирование сетевого слоя в iOS

Конечно, идеального решения не существует.

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

В двух больших статьях автор рассказывает о своём подходе к реализации на примерах:

📖 Проектирование API-клиента (создание запросов, пример реального варианта использования, авторизация + логирование).

📖 Вторая часть посвящена модульным и интеграционным тестам.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
525👍13👏6🔥3❤‍🔥2💯2👌1🎄1
Отрисовка графики на Apple Vision с помощью Metal Rendering API

Материалов по Apple Vision Pro очень мало (а приложений чуть больше, но если вы что-то делали, поделитесь в комментариях, очень интересно).

Когда дело доходит до рендеринга, большинство разработчиков выбирают уже известные игровые движки вроде Unity или высокоуровневые API Apple (чекайте RealityKit).

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

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

Нашёл любопытную статью (которую сохранил и себе для будущих экспериментов), в которой рассматривается множество интересных моментов:

📖 Создание и настройка LayerRenderer.

📖 Vertex Amplification (и описание примеров с Vertex/Fragment шейдерами).

📖 Обновление и энкодинг для кадров.

📖 Поддержка стереоскопического и не-VR рендеринга дисплея.

📖 Рекомендации и советы.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
720👍9🔥6❤‍🔥4💯211👏1👌1🎅1
Что вы используете для хранения данных на клиенте (можно несколько вариантов)
Anonymous Poll
50%
Core Data
14%
SwiftData
22%
Realm
14%
SQLite
61%
UserDefaults
7%
Другое (напишу в комментариях)
613💯8👍52👌21🔥1🎅1🎄11
ℹ️ Новое требование к обновлениям приложений в ЕС

Начиная с сегодняшнего дня, для отправки обновлений приложений в App Store на территории Европейского Союза (ЕС) владельцам аккаунтов или администраторам программы Apple Developer Program необходимо ввести статус трейдера в App Store Connect.

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

Начиная с 17 февраля 2025 года, приложения без статуса трейдера будут удаляться из App Store в ЕС до тех пор, пока статус трейдера не будет предоставлен и проверен в целях соблюдения Закона о цифровых услугах.

Несколько рекомендаций по заполнению статуса - здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
10177👌6👏2❤‍🔥1🔥1🤯1🎉1🫡1
И ещё одно нововведение (более приятное) в App Store Connect

Будет полезным для инди-разработчиков (и для команд маркетинга/оптимизации и так далее).

В sales и trends всегда была опция для статистики по приложениям за все время (lifetime), а вот в аналитике добавили только сегодня.

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

🤩 Посмотреть можно на вкладке аналитики в списке пресетов.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
717💯74👍3🔥2🙏2🎅2🎄2
Технические собеседования в iOS IQ

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

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

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

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

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

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

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


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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
119👍76🔥3🤝2❤‍🔥1👏1💯1🆒1😎1
Какую минимальную версию iOS вы поддерживаете на вашем рабочем проекте?
Anonymous Poll
4%
18
6%
17
20%
16
35%
15
19%
14
16%
13 (или ниже)
61188🤯3🔥2👏2💯2🎄2👍11
Как начать использовать Swift Testing

📖 В этой статье автор делится своим взглядом на то, что нужно знать для начала работы с новым фреймворком Swift Testing.

Рассмотрены основные возможности Swift Testing (а ещё его отличия и улучшения по сравнению с XCTest).

📺 А вот здесь этот материал представлен в формате видео.

📖 Кстати, в канале есть ещё один вариант разбора отличий и преимуществ по сравнению с XCTest.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
616👍85🔥22👏1💯1🎅1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Как создавать привлекательные анимации

Люди все чаще выбирают инструменты, ориентируясь на общие впечатления, а не только на функциональность.

Приложение, которое делает то, что вы ждёте и так, как вы хотели бы видеть — вот что выделяет продукт.

В частности, это одна из основных причин, почему компании инвестируют в дизайн-инженеров.

Умение создавать приятные анимации — сложная задача (для которой нужен опыт и знания).

📖 Эмиль Ковальски рассказывает о таких анимациях, приводит примеры (не только для iOS-платформы) и даёт советы, как можно улучшить впечатление пользователей.

В свою очередь, самыми интересными примерами я делюсь здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
527💯85👍4🔥3👏2🎉1👌1🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
🤩 Image Playground в действии

Пока мы ждём выкатки API для разработчиков, некоторые счастливчики на бете успели потестить функциональность.

Похвалитесь, кто был в листе ожидания, получили ли доступ? В Европе пока все эти фичи (даже в бете) недоступны.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7255👍5🔥4🎄3😎3❤‍🔥2👏1🎉1💯1
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация переходов между view в SwiftUI

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

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

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

🔘Навигация между экранами.
🔘Добавление (или удаление) элементов из списка.
🔘Показ модальных вьюх.

📖 Разбор создания таких эффектов (и их комбинаций) можно почитать в этой статье.

🔗В канале есть ещё и пример таких переходов с использованием Metal.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
421👍7👏3💯32🎉2🎄2❤‍🔥1🔥1
iOS IQ — карта контента базы знаний

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

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

🤩 А подписавшись сегодня, вы получите доступ к нескольким важным разделам:

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

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

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

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

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

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


Всю следующую неделю действует специальное вводное предложение (в телеграм по-прежнему немного выгоднее).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2515👍8🔥6💯2🎄211❤‍🔥1
Комплексное руководство по работе с KeyPath в Swift

В мире Swift KeyPath - это мощная, но часто недооцениваемая функция.

Цель этой статьи — глубоко изучить функциональные особенности KeyPath, раскрыть возможности и помочь использовать её в процессе разработки.

📖 В материале описаны свойства, приведены примеры как читать/устанавливать значения через KeyPath и использовать KeyPath в качестве параметра.

5 вещей, которые вы могли не знать о KeyPaths можно проверить в этом посте.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
614👍6👏4🔥2🙏2🎄2111👌1
Работа с таймерами в Swift

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

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

🔘 Зачем вообще нужны таймеры в Swift.
🔘 Повторяющиеся (и не повторяющиеся) таймеры.
🔘 Как запланировать повторяющиеся задачи.
🔘 Что такое tolerance и как runloop modes влияют на работу таймера.

📖 В канале есть ещё один неплохой разбор таймеров (ведь как известно, даже Apple допускает ошибки).

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
917🔥8👍6👏2💯1🫡1🎄11
This media is not supported in your browser
VIEW IN TELEGRAM
Реализация размытия экрана в режиме многозадачности

🔑 Повышение уровня конфиденциальности важно при разработке современных приложений (особенно мессенджеров или банковских приложений).

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
728👍10🔥8👌22❤‍🔥1🎉1🤩1😎1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Огненный шейдер на Swift (нативное решение на Metal)

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

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

На видео не используются никакие текстуры, только натив.

Описал весь опыт, источники и привёл пример кода на Swift эксклюзивно здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥577🏆6👍5❤‍🔥1🤯1🤩1💯1🆒1
Разрешено ли у вас использовать ChatGPT (и аналоги) в компании?
Anonymous Poll
62%
Да (можно любые запросы)
24%
Да, но только без передачи кода проекта на вход
14%
Нет, строгий запрет
18👍9🤯964🔥43🎄22👌1
Шифр Виженера или приключение на одну минуту

Наверняка вы знаете про шифр Цезаря (даже если никогда не думали про Римскую империю).

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

Для шифрования нужню юзать таблицу алфавитов (она же tabula recta или квадрат Виженера).

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

Таким образом, в таблице получится 26 различных шифров Цезаря.

🚀 Но давайте к делу!

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

В канале я спрятал ключевое слово, подсказка — этот пост.

Используйте ключевое слово к этой строке: qck_fvzy_14_UYxpuF и вы получите код билета на конференцию.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
1214👍74🔥2👏2💯21🎉1👌1🎄1