Telegram Web Link
Масштабное руководство по анимациям в 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
Погружение в управление памятью в Swift

Статей по управлению памятью в Swift не так много, но это одна из тем базы при любом собеседовании на позицию iOS-разработчика.

В нашем канале есть отличная подборка, которая будет пополнена и этим материалом.

📖 В своём посте Александр Дремов рассказывает о том, как работает управление памятью в Swift, и как модификаторы памяти: unowned и weak - влияют на время жизни объекта.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Изучение акторов и расширений протоколов

В этом посте автор решил поэкспериментировать с использованием Actors. И, как оказалось, существует несколько тонкостей, которые полезно знать.

📖 Более детально можно познакомиться здесь. Основные темы:

1️⃣ Как проверить ошибки в вашем многопоточном коде с помощью юнит-тестов.

2️⃣ Что может пойти не так, когда вы используете расширения протоколов на Actors.

3️⃣ Как безопасно использовать расширения протоколов на акторах.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация модульной архитектуры на примере Spotify

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор и разрешение мерж-конфликтов (продолжение работы с Git)

В большинстве случаев при понимании принципов работы Git вы уже будете готовы к подобным проблемам.

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

📖 Вот тут можно познакомиться с основными причинами мерж-конфликтов и посмотреть на варианты их разрешения.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
SwiftUI LazyVGrid и LazyHGrid: обзор возможностей

🤩 В отличие от обычных сеток, LazyVGrid и LazyHGrid предлагают более динамичные и гибкие способы отображения контента.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
‼️ Альтернативные магазины приложений уже доступны для разработчиков!

Apple анонсировала долгожданные изменения в политике распространения приложений для ЕС.

Для разработчиков появились новые варианты распространения приложений и создания своих сторов.

Обещают более 600 новых API и расширенную аналитику, сниженную комиссию и новые способы оплаты внутри приложений.

🛠 Разработчики могут попробовать опции уже в бете 17.4, доступной сегодня.

💻 Для пользователей ЕС магазины будут доступны с марта 2024 года.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Анонс расширенной аналитики в App Store

В соответствии с изменениями DMA (законе о цифровых рынках), Apple расширит аналитику, доступную для приложений разработчиков как в ЕС, так и по всему миру.

Обещают, что через API App Store Connect будет доступно более 50 новых видов отчетов для анализа эффективности, среди которых:

1️⃣ Engagement — доп. инфа о количестве пользователей в App Store, которые взаимодействуют с приложением разработчика или делятся им.

2️⃣ Commerce — информация о загрузках, продажах и выручке, предзаказах и транзакциях In-App Purchase.

3️⃣ App usage — покажут новые отчёты о крашах, активных девайсах, инсталлах, удалениях и так далее.

4️⃣ Frameworks usage — о взаимодействии юзеров с с PhotoPicker, Widgets и CarPlay.

Кстати, появится Analytics Reports API для доступа к этим отчётам (может и я добавлю в Starly 🤌).

📖 Дополнительные детали будут в марте.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация эффектов ScrollView в iOS 17

🤩 В iOS 17 у нас появились новые возможности анимации.

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Шикарный эффект с использованием SpriteKit

Конечно, при должном умении Metal может удивить даже самых скилловых разработчиков, но и на SpriteKit можно делать красоту.

🤩 Как, например, это сделал Toni Lijic в гифке, которую вы видите.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Так ли плохи курсы?

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

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

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

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

Основной минус при этом — отсутствие государственной аккредитации (очень часто), и обучение одной ветви навыков.

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

И в этом случае выбор между курсами (в том числе онлайновыми) и 4 годами обучения (минимум) очевиден.

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

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

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Интеграция интерактивных 2D/3D-объектов в iOS-приложение

В этой статье Степан из SimbirSoft разбирает, как можно реализовать интерактивный логотип целыми тремя способами (от плоского изображения к объёмному объекту).

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

🛠 Код проекта доступен здесь.

📖 Ознакомиться с материалом можно на хабре.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
💸Динамика зарплат разработчиков во второй половине 2023 года

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

😎 Самый ощутимый рост зарплат был у разработчиков в Objective-C и С++ — на 21%, до 379 000 и 200 000 ₽ соответственно.

При этом, для Swift-разработчиков в медиане всё осталось по-старому, произошло только незначительное снижение на 2%, до 245 000 ₽.

В среднем больше всего в компаниях платят в Авито (медиана 325 000 ₽), в пятёрке также Лаборатория Касперского и VK.

📖 Больше аналитики доступно здесь.

А вот тут можно сравнить размеры зарплат полугодовой давности.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 Новая топ-фича Xcode: сохранение скриншота напрямую из Preview

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

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

Для этого достаточно перейти в Editor > Canvas > Export Preview Screenshot (или можно скопировать напрямую, не верю, что Apple и это сделала). Супер-удобно (и да, сохранить можно сразу в нужном разрешении).

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Подробное описание диспетчеризации в Swift

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

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

Знание видов и характеристик важно для повышения производительности кода.

Поэтому хорошо бы разбираться в том, чем, например, отличается Static dispatch от Dynamic dispatch.

Кстати, диспетчеризация методов добавляет уникальности Swift: если большинство языков поддерживают несколько подходов к диспетчеризации, то Swift поддерживает их все (⚪️).

📖 Делюсь потрясающим разбором типов диспетчеризаций, примеров и отличий.

Из этой статьи вы также узнаете, зачем для Realm (которая сейчас называется Atlas Device SDK) для свойств объектов нужно добавлять @objc dynamic.

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
Делегирование в Swift: определение и примеры

Паттерн «делегат» уже давно занимает одно из важнейших мест на платформах Apple.

Делегирование используется для всего, начиная от обработки событий таблицы с помощью UITableViewDelegate и заканчивая изменением поведения кэша с помощью NSCacheDelegate.

Основная цель паттерна — позволить объекту общаться со своим владельцем в свободном (можно сказать, что отсоединённом) виде.

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

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

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

😃 iOS Dev🐱 Доступ к алгоритмам
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/10/02 08:21:53
Back to Top
HTML Embed Code: