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

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

#ios #mobile #swift
加入频道
Паттерны проектирования в iOS на основе банды четырёх

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

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

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

Получить доступ можно здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как улучшить навыки чтения кода?

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

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

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

1️⃣ Просто попробуйте его запустить (пожалуй, один из самых надёжных вариантов понять, что происходит внутри).

2️⃣ Постарайтесь найти высокоуровневую логику. От общего к частному (но не наоборот).

3️⃣ Старайтесь чаще использовать возможности Xcode (в том числе и шорткаты).

4️⃣ Не останавливайтесь на каких-то базовых знаниях, следите за развитием самого языка.

5️⃣ Читайте больше о паттернах проектирования.

6️⃣ Не бойтесь код-ревью. Комментарии вашей команды помогут развиваться обеим сторонам.

7️⃣ Временный рефакторинг — один из способов. Мы можем начать с какого-то длинного метода, разбить его на несколько частей (если необходимо) и продолжить дальше. А гит нам поможет, если что-то пойдет не так.

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

Я считаю затронутую тему одну из важнейших в разработке.

Поэтому я наполняю базу интересными и необычными вопросами, проверяющими навык чтения кода и поиск ошибок в нём.

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

Вопросы доступны здесь.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизация памяти для приложения SwiftUI + Core Data

Несмотря на использование lazy containers в SwiftUI и механизмы оптимизации памяти Core Data, по мере увеличения сложности и количества вьюх (например, микса текста и картинок) потребление памяти будет увеличиваться.

С свою очередь, это может привести к крашу.

В материале ниже показано, как можно оптимизировать память для приложения, в изначальном кейсе использующего 1,6 ГБ памяти для отображения 100 элементов данных.

В процессе также можно узнать, как можно работать с сотнями таких элементов и оставаться в рамках всего 200 МБ.

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Практические решения проблем с помощью Swift Concurrency

Swift Concurrency может быть довольно непростым в использовании.

Matt Massicotte задокументировал и поделился своими решениями и сложностями, с которыми можно столкнуться при работе со Swift Concurrency:

1️⃣ Создание асинхронного контекста.

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

3️⃣ Изоляция.

4️⃣ Структурированный параллелизм.

5️⃣ Использование библиотек, не предназначенных для параллелизма.

6️⃣ Совместимость.

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Как уменьшить размер приложения с помощью динамических фреймворков

Даже крупнейшие приложения iOS в App Store допускают ошибки и нарушают D.R.Y. путём копирования целых модулей.

Например, Hyundai дублируют каталог assets (который в итоге добавляется в приложение 3 раза).

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

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

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

🛠 Код проекта можно посмотреть на github.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа со SwiftData: гайд по использованию

Хотя она и поддерживается только с iOS 17+, но осваивать и изучать её полезно.
Для новых проектов вы можете использовать SwiftData уже сейчас, в том числе основываясь на этой подборке.

А сегодня я хотел бы поделиться ещё одним набором советов по работе:

Настройка

🔗 Как создать Persistent Container SwiftData или получить к нему доступ

Моделирование

🔗 Как создать модель SwiftData в Swift
🔗 Как добавить структуры или перечисления в SwiftData
🔗 Как использовать Transient в SwiftData

Действия в SwiftData

🔗 Как получить все объекты SwiftData
🔗 Как получить конкретный объект из SwiftData
🔗 Как узнать, существует ли объект в SwiftData

Создание

🔗 Как добавить объект в SwiftData

Обновление

🔗 Как обновить объект в SwiftData

Удаление

🔗 Как удалить объект в SwiftData
🔗 Как удалить все объекты из SwiftData в Swift

Возможные ошибки и решение

🔗 Краш в SwiftData при попытке доступа к удаленному объекту
🔗 Как решить проблему No exact matches in call to instance method 'setValue'

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Большое обновление базы iOS IQ

➡️ Добавлен блок на умение читать и понимать код (и поиск ошибок).

Разобрал порождающие паттерны проектирования (с примерами на Swift):

Абстрактная фабрика, строитель, прототип, синглтон, фабричный метод.

Затронул узкие, но важные темы для собеседований, например:

➡️ Для чего нужен DispatchSemaphore и как с его помощью решить проблему доступа к ресурсу.
➡️ Какая разница между raw и associated в enum?

Поделился своим опытом решения алгоритмических задач:

➡️ Блок средних задач с CodeRun (над некоторыми бился несколько дней).

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

🐱 Вступить можно вот тут.

😃 iOS IQ
Please open Telegram to view this post
VIEW IN TELEGRAM
Рисование и анимация: контуры и фигуры в SwiftUI

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

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

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

Отлично подойдёт новичкам (и по времени всего 25 минут). Код доступен здесь.

😃 iOS IQДругие эффекты
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Генерация Swift-кода в (почти) реальном времени на базе нарисованного скетча

🎆 Дэниел Лейверс в демонстрации магистерской диссертации показал, на что способны современные технологии.

Можно набросать скетч помощью iPad-pencil и увидеть, как рядом с ним появляется реальный интерактивный интерфейс и Swift-код.

Приложение использует модель, заранее созданную на базе элементов UI, которая подается в алгоритм yolov5 и преобразуется в CoreML.

Это невероятно сложно и интересно.

📖 Саму диссертацию Дэниела можно прочитать здесь.

😃 iOS IQДругие эффекты
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
😎WWDC 2024 пройдёт с 10 по 14 июня

Сегодня компания Apple объявила о том, что ежегодная Всемирная конференция разработчиков (WWDC) пройдёт в режиме онлайн с 10 по 14 июня 2024 года.

Разработчики и студенты смогут лично принять участие в специальном мероприятии в Apple Park в день открытия.

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

😃 iOS IQ
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый источник знаний от Apple (в дополнение к анонсу WWDC)

📺 Apple запустила новый канал Apple Developer на YouTube, который будет использоваться для обмена информацией о сессиях и мероприятиях WWDC, за которыми смогут следить разработчики.

Видеоролики уже сейчас организованы в плейлисты по темам: App Store, Swift, Spatial Computing, Safari (и будут доплняться другими разделами).

И это уже даёт представление, какой контент мы можем ждать на самой конфе.

😃 iOS IQ
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Воспроизведение анимации с заставки WWDC 2024

В iOS IQ я стараюсь рассматривать не только важные моменты о разработке, но и необычные анимации и эффекты.

Во вчерашней новости многие обратили внимание на сложный эффект в заставке.

🤩А Дэниел Кунц уже успел реализовать его с помощью метал-шейдера.

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

😃 iOS IQ
Please open Telegram to view this post
VIEW IN TELEGRAM
SwiftUI Layout Protocol: как работать с версткой в SwiftUI

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

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

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

Первая часть:

➡️ Что такое Layout Protocol?
➡️ Разбор View Hierarchy.
➡️ Первая реализация лэйаута.
➡️ Выравнивание контейнеров.
➡️ Кастомные значения: LayoutValueKey.
➡️ Дефолтный Spacing.
➡️ Для чего нужен Spacer().
➡️ Layout Cache.
➡️ Переключение между лэйаутами с помощью AnyLayout.
➡️ Выводы.

Вторая часть:

➡️ Пусть начнётся веселье!
➡️ Кастомные анимации.
➡️ Двунаправленные кастомные значения.
➡️ Избежание зацикливания и крашей.
➡️ Рекурсивные лэйауты.
➡️ Композиция лэйаутов.
➡️ Еще один пример композиции: Интерполяция.
➡️ Использование binding-параметров.
➡️ Полезный инструмент отладки.
➡️ Заключительные мысли.

🐱 Больше разборов, примеров анимаций, алгоритмов и архитектур — доступно вот здесь.

😃 iOS IQ
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый раздел в Develop in Swift от Apple

🤩 Тим Снит сегодня анонсировал новый набор туториалов для тех, кто только делает первые шаги в программировании с помощью Swift и SwiftUI.

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

📖 Обучающие материалы Apple доступны здесь.

😃 iOS DevРазбор алгоритмов
Please open Telegram to view this post
VIEW IN TELEGRAM
Важное обновление AppStore Connect, новый сервис Apple Crash +

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

Теперь review team будет проверять приложения только 3 раза после каждого реджекта. Все остальные проверки доступны платно.

Доступно два вида подписки на Apple Crash +:

💵$ 9.99 в месяц – Apple Crash + безлимитные проверки приложений после первого реджекта.

💵$ 19.99 в месяц – все то же самое, что и в первой версии, но проверка приложений будет в течение часа после загрузки билда.

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

📺 Детально изменения доступны на новом канале эпла в YouTube.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
TextView и что он скрывает

Уже более 9 лет Михаил Лапушкин работает над своим текстовым редактором. За это время он прошёл огромный путь, и в двух масштабных статьях делится тем, с какими подводными камнями ему пришлось столкнуться и, например, почему в приложении нет сторонних зависимостей.

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

📖 А во второй делится хардкорными вещами: работой с атрибутами, стилями, перфомансом, математикой для отрисовки и многим другим.

😃 iOS Dev🐱 Узнать больше об архитектурах
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание 3D-элементов для iOS и VisionOS

Meng To выпустил большое обучающее видео по работе со Spline.

📺 В этом видео можно узнать о следующих вещах:

1️⃣ Создание интерактивных 3D-сцен для приложений iOS и экспорт в Xcode 15+.

2️⃣ Работа над элементами для visionOS.

3️⃣ Пример создания 3D-иконок приложений и динамических анимаций интерфейса.

4️⃣ Расширенные возможности Spline, такие как частицы и физика для более реалистичных эффектов.

5️⃣ Введение в 3D-моделирование.

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Шаринг файлов с кастомными типами в iOS

📁 Если вы планируете использовать не только стандартные типы файлов на iOS, но и заставить систему распознать файл и открыть его в вашем приложении, вы можете использовать типы документов и идентификаторы экспортируемых типов.

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

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

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

😃 iOS Dev
Please open Telegram to view this post
VIEW IN TELEGRAM
Apple Store Ковент-Гарден (Лондон)

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

📸 В этот раз делюсь фотосетом одного из флагманских магазинов компании в Великобритании.

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

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

После оплаты они могут посетить «комнату настройки», где сотрудники Apple распакуют и настроят их новый гаджет.

Забавный факт, даже если у компании что-то пойдет не так, то на продаже этой недвижимости они смогут заработать невероятно крупную сумму денег, ведь адрес этого красивого здания - London, The Plaza, 1.

Около десяти лет назад в Ковент-Гардене было даже больше посетителей, чем на пятом авеню в Нью-Йорке!

Другие истории об эпл сторах:

🍏 Apple Store Marunouchi в Токио.

🍏 Apple Store в Купертино.

🍏 Apple Tower Theater в Лос-Анджелесе.

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