Telegram Web Link
Универсальный датасорс (хранилище данных) в iOS-разработке

Такие решения предоставляют разработчикам API для доступа к данным в коллекциях без привязки к конкретному источнику и типу данных.

📖 В статье на хабре рассматриваются:

🔘 Cтандартные подходы к регистрации и конфигурации ячеек в коллекции.

🔘 Альтернативный подход с использованием ViewRegistration.

🔘 Пример реализации универсального датасорса (на базе Diffable Datasource)

🔘 Преимущества, особенности, сложности и недостатки подхода.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Обновление местоположения пользователя с помощью Core Location и Swift Concurrency

😎 Мы можем создавать собственные обертки для управления доступом к основным сервисам iOS, используя возможности Swift.

Например, для решения задачи получения геолокации через Core Location можно задействовать CheckedContinuation.

📖 А в этом материале рассказано, как написать свой Location Manager, запросить авторизацию и правильно обновлять локацию пользователя.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Добавление Firebase Analytics замедляет запуск приложения на 30%

Emerge Tools замерила производительность топовых аналитических SDK для iOS.

👨‍💻 Тестили на базовом приложении под iOS (тот, что по дефолту при создании проекта), так как его размер всего 118,5 КБ и нет доп. нагрузки.

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

📖 Интересные выводы и результаты других SDK в этом посте. Кстати, тут же и объясняется, почему выбрали относительное, а не абсолютное время сравнения.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
8 советов по оптимизации приложения для iOS

📺 Itay Brenner и Vincent Pradeilles дают практические советы и разбирают способы повышения производительности в видео.

Более детально разделы доступны по следующим тайм-кодам:

1️⃣ Работа с бинарными символами.

2️⃣ Шаринг кода и ресурсов.

3️⃣ Оптимизация ассетов.

4️⃣ Сохранение основного потока лёгким по возможности.

5️⃣ Использование Static Dispatch.

6️⃣ Разбор менеджеров пакетов, их преимущества и недостатки.

7️⃣ Оптимизация CoreML-моделей.

8️⃣ Про постоянные улучшения.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
В России разрешили использовать альтернативные способы покупок в App Store!

Для этого нужно будет использовать StoreKit External Purchase Link Entitlement, выполнить ряд условий и заполнить форму.

При этом комиссия Apple составит 27 % от выручки.

Важнейший шаг к альтернативным сторам?

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Swift-библиотека для моделирования и визуализации графов

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

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

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

🛠 Сама либа от Zhen Li доступна здесь, и получившийся итог завораживает!

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

Существует множество различных типов графиков.

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

📖 Например, в этой статье автор создаёт комбинированную диаграмму для отображения данных на базе Line Chart и Area Chart.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Разделение данных на примере использования .chunked()

🧑‍💻 Один из самых важных источников знаний для просмотра реализации тех или иных алгоритмов — Swift Algorithms.

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Диспетчеризация потоков и Actors: как их использовать

Акторы обеспечивают выполнение кода в определенном потоке (например, в основном или фоновом).

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

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

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

📖 Одна из самых крутых и интересных статей на хабре — про математические способности и то, как сейчас люди современности подходят к решению тех или иных проблем.

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

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

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

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

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

Несмотря на это, не могу не отметить диаграмму выше. Вы же слышали про состояние потока?

Диаграмма основана на исследованиях о вызовах в процессе наших с вами задач (тут 📺 лекция).

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Способы измерения производительности Swift-кода

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

Для этого можно попробовать:

🔘 Написание юнит-теста в проекте Xcode.
🔘 Использование Playground
🔘 Написание юнит-теста и его использование через терминал.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Структуры данных в Swift: знакомство с базовыми понятиями

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Реализация загрузки и сохранения офлайн-карт в приложении от автора Pedometer++

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

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Вышла тех-превью версия Skip — технологии для кроссплатформенных приложений на базе iOS!

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

Сердцем Skip является интеллектуальный транспилятор языка Swift в Kotlin (и еще несколько лет назад Skip был бы невозможен).

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

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

🧑‍💻 Онлайн-playground, в котором можно попробовать возможности Skip.

📖 Документация.

И хотя поддержка API по-прежнему ограничена (будут сложности с внедрением SwiftData или, например, Firebase), все библиотеки Skip имеют открытый исходный код и разработчик приглашает поучаствовать в их улучшении.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Знакомство с bash-скриптами для iOS-разработчиков

Использование Bash может помочь выполнить широкий спектр задач, например:

🔘 автоматизация процессов сборки;
🔘 управление файловыми системами;
🔘 запуск тестов;
🔘 развертывание приложений.

Любую команду, которую мы можем запустить в терминале, можно запустить, используя Bash.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Breadcrumbs: утилита-багтрекер на основе комментариев

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

Для этого нужно запустить приложение и выбрать папку проекта. Выглядит как любопытная мысль 😉

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Разбор особенностей протоколов в Swift

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

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

В целом о них можно рассуждать с четырех разных точек зрения:

1️⃣ Использование в рантайме.

2️⃣ Использование во время компиляции.

3️⃣ Протоколы с ограничениями во время компиляции.

4️⃣ Синтез реализаций протокола и его влияние на время компиляции.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
⭐️На Swift.org появился новый раздел Packages!

Есть общие категории: сервер, сеть, тестирование и логирование. Но не только они. Например, представлены пакеты, содержащие макросы.

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

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

📖 Изучить их детальнее можно здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Flappy Dird — игра внутри MacOS Finder

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

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

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

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

📖 Кстати, если вам интересен исходный код, то он в опенсорсе.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/02/23 17:08:26
Back to Top
HTML Embed Code: