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

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

#ios #mobile #swift
Download Telegram
❗️Новые требования Apple к сторонним SDK и Privacy Manifests

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

Подписи будут нужны, даже если SDK (пока список от Apple как на скриншоте выше) включены в качестве зависимостей.

Любая версия и SDK, которые переупаковывают вышеуказанные, также включены в требования.

Для каждого вида данных понадобится словарь NSPrivacyCollectedDataType с ключами:

NSPrivacyCollectedDataType, NSPrivacyCollectedDataTypeLinked, NSPrivacyCollectedDataTypeTracking и NSPrivacyCollectedDataTypePurposes.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯16🔥14🫡73👍2🏆22
AsyncPhoto и пример использования для отображения больших фотографий

ℹ️ AsyncImage нужен, как и следует из названия, для того, чтобы асинхронно грузить и отображать изображения.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
124👍2🔥2👏1🏆1
This media is not supported in your browser
VIEW IN TELEGRAM
❄️ Невероятно красивый зимний эффект в iOS-приложении

📖 Marcus Eckert пишет, что для реализации использовал кастомизацию всего по чуть-чуть, но основная логика написана с использованием cpp+metal.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
119🔥51👍7🤩322❤‍🔥1🏆1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Скрытая особенность typealias

⭐️ Скорее всего, при разработке вы периодически используете typealias.

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

📖 В этой статье разбираются возможности typealias на реальных примерах.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥327👍4🤩42👏1🏆11
Как и когда использовать Lazy Collections в Swift

➡️ Такие коллекции откладывает вычисления до тех пор, пока они действительно не понадобятся.

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

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

📖 А о преимуществах и недостатках можно прочесть здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👏1083🔥22🏆1
Приготовил для вас сюрприз ❤️

🔨 Что, если бы Xcode показывал нам статистику по итогам года?

Или, например, мы знали, сколько крашей пофиксили?

☕️ А сколько минут собирались наши проекты?

🤩 Я представил эту альтернативную реальность в стиле Spotify (или других сервисов, как вам удобнее), и делюсь итогами года iOS-разработчика с вами!

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉7718🤩97❤‍🔥33👍2🏆1
AsyncStream на реальных примерах: работа с Apple Photos

🧑‍💻 AsyncStream позволяет ожидать последовательность элементов, возвращая их, когда они будут готовы.

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

Например, автор следующей статьи переосмыслил использование PHAsset.fetchAssets с помощью AsyncStream.

📖 Вот тут можно посмотреть на этот подход и граничные кейсы.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥164👏2🤩2👍1🎉1🏆1🆒1
This media is not supported in your browser
VIEW IN TELEGRAM
Создание прогресс-бара в ретро-стиле с использованием CALayers

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

😎Наверняка, каждый из нас проектировал и внедрял в проекты те или иные контролы, а некоторые и десятки раз.

Если вам нравится использовать UIKit, но вы все еще не знаете, как работать с CALayers, эта статья будет вам полезна.

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

🛠 Окончательный вид и код проекта можно посмотреть здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👏16👍84🤩22❤‍🔥1🏆111
Удаление данных в SwiftData

Существует как минимум три способа удалить данные при использовании SwiftData.

📖 В этом обзоре рассматриваются эти варианты и неочевидные моменты.

Другие посты на тему:

1️⃣ Отслеживание изменений данных в SwiftData.

2️⃣ Архитектурный дизайн SwiftData и возможности миграции.

3️⃣ Вопросы и ответы про SwiftData и CoreData.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍87🔥2👏2🏆2
This media is not supported in your browser
VIEW IN TELEGRAM
Игра «Жизнь» Конвея: реализация на Swift

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

👩‍🎓 Впервые она была описана в 1970 году британским математиком Джоном Конвеем и обладала следующими правилами:

1️⃣ Любая живая клетка с менее чем двумя живыми соседями погибает, как при недонаселении.

2️⃣ Любая живая клетка с двумя или тремя живыми соседями продолжает жить в следующем поколении.

3️⃣ Любая живая клетка с более чем тремя живыми соседями умирает, как при перенаселении.

4️⃣ Любая мертвая клетка с ровно тремя живыми соседями становится живой клеткой, как при размножении.

Как видите, правила довольно понятны и логичны.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥5🤯42❤‍🔥1👍1🏆111
This media is not supported in your browser
VIEW IN TELEGRAM
2023 -> 2024

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

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

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

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

Даже получилось справиться с алгоритмическим марафоном Яндекса 🥲.

Но вот что хочется сказать

Профессиональные цели — это хорошо, но не главное в жизни.

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

Желаю вам следовать за моральным компасом, и делать то, что действительно важно.

А от меня как минимум интересные статьи, видео, истории и подборки (и розыгрыши).

🎄С наступающим Новым годом!

😃 iOS Dev - поздравить можно бустом (или лайком)
Please open Telegram to view this post
VIEW IN TELEGRAM
42❤‍🔥17🎅13🎄12👍433🎉221
Основы Git для iOS-разработчиков

👨‍💻 Для начинающих разработчиков необходимо понимать принципы работы (даже если вы юзаете Tower или другой клиент).

На самом деле, конечно, не совсем корректно говорить только в контексте iOS.

📖 В этом посте хорошо объясняются на примерах основы git, после которых уже можно приступать и к более продвинутым действиям.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
17👍7🔥4👏322🏆1