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

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

#ios #mobile #swift
加入频道
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
Please open Telegram to view this post
VIEW IN TELEGRAM
iOS Dev
Разыгрываю премиум только для самых крутых читателей канала

Условия невероятно сложны и хардкорны:

1️⃣ Читать iOS Dev.
2️⃣ На этом всё 🫡

🙂 Всем удачи!

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

Доклад с iOSDevUK в виде интерактивного обучения (с помощью DocC) поможет разобраться в следующем:

1️⃣ Основные и более сложные методы создания вьюх.

2️⃣ Как сделать SwiftUI-view кастомизируемыми.

3️⃣ Как добавить больше интерактивности с использованием action handlers.

4️⃣ Использование API для создания стилей, например, в Button или Toggle.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM