Telegram Web Link
Приготовил для вас сюрприз ❤️

🔨 Что, если бы 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
AsyncStream на реальных примерах: работа с Apple Photos

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

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
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
Удаление данных в SwiftData

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

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

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

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Основы Git для iOS-разработчиков

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация морфинга в Dynamic Island

🤩 Janum Trivedi создал похожую анимацию в SwiftUI и выложил ее в открытый доступ.

Она выглядит интуитивно, работает на частоте 120 Гц, и, что главное, не юзает приватное API.

🚀 Посмотреть реализацию на Swift + Metal можно тут.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Быть эффективным

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

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

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

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

Уменьшение количества ответов на StackOverflow это вершина айсберга, недавно и The New York Times начала судиться с OpenAI.

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

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

Будьте эффективнее, пишите код, изучайте теорию, формируйте фундамент.

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

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

Также и ни один программист не станет архитектором, только прочитав «Банду четырёх» и не написав ни строчки кода.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Советы по повышению производительности

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

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

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

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

Неплохой точкой отсчёта для поиска проблем с производительностью могут быть эти видео от Apple:

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

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

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

📖 А вот тут Martin Mitrevski приводит примеры, которые могут вызывать подобные проблемы, и указывает на возможные варианты решения.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтение и запись пространственного видео с помощью AVFoundation

AVFoundation справляется с задачами чтения, записи и воспроизведения кадров, но процесс меняется при работе с пространственным видео (также известным как MV-HEVC), которое по факту представляет собой видео с двух разных сторон.

Загрузка пространственного видео в AVPlayer или AVAssetReader на iOS выглядит так же, как и загрузка обычного видео.

В iOS 17.2 и macOS 14.2 (и, кстати, новый Xcode уже в проде) появились новые API AVFoundation для работы с файлами MV-HEVC.

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

📖 Вот несколько советов по работе с ними.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Масштабное руководство по анимациям в SwiftUI

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

❗️ Но после более глубокого рассмотрения можно заметить ряд сложностей.

Основная причина этих проблем — отсутствие детального понимания логики обработки анимации в SwiftUI.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Собственная обёртка для SQLite с нуля

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

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

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

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

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

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

1️⃣ Обертка для Swift SQLite, часть 1: Создание соединения.

2️⃣ Часть 2: Привязка и получение значений.

3️⃣ Часть 3: Пул соединений.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор кнопок SwiftUI: создание и возможности кастомизации

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

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

📖 В этом посте объясняется, как красить кнопки как добавить кастомные стили и несколько анимаций.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Предотвращение гонок данных при использовании глобальных переменных

Мы всегда должны предотвращать потенциальные гонки данных, поскольку они могут привести к самым неожиданным крашам.

Если при использовании Swift 6 в build settings включить настройку concurrency, то можно получить соответствующие предупреждения.

📖 В этом материале автор рассказывает, как избежать таких ворнингов при обращении к глобальным переменным из любого контекста.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/10/01 22:21:48
Back to Top
HTML Embed Code: