iOS Broadcast
3.38K subscribers
1.72K photos
85 videos
985 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @ab_manager
加入频道
#architecture

📺 MVI в iOS-приложении (32 мин)

🗣 Разбор популярной State Machine в Android в реалиях iOS. В начале немного сложновато, но под конец на реальном примере все встает на свои места

📍 Какие существуют инструменты и фреймворки, позволяющие реализовать State Machine и их различия
📍 Модули MVI и их обязанности
👎3🔥2👏1
#architecture

How to modularize existing iOS projects using Swift Package (15 мин)

🗣 Потрясающая пошаговая и подробная инструкция для модуляризации имеющегося проекта в Swift Package

📍 Создание Swift Package
📍 Конфигурация поддерживающих платформ
📍 Регулирование уровней доступа к полям
👍4👎3
#ui #architecture

Every Screen in Your App Should Be a Scrolling View (7 мин)

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

В статье помимо очевидных доводов присутствуют и те, о которых я не задумывался. Поэтому будет полезно их учесть. Жаль, в посте не предложено готовое решение, зато есть шанс придумать свое
👍4👎2🔥2
Memento Pattern with SwiftUI

Memento - один из поведенческих дизайн паттернов банды четырёх. Какую проблему он решает?

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

В паттерне есть следующие роли:
👉 Caretaker ответственен за хранение стека состояний объекта. Он держит ссылку на originator и пользуется его возможностями
👉 Originator хранит текущее состояние объекта, может создать объект и воссоздать объект по данному состоянию
👉 Memento Object - и есть сам объект, который создает Originator и ссылку на который хранит caretaker.

#architecture
👍3👎21
Handling multiple caches in App (4 мин)

Вариант имплементации кэширования для разных типов данных:
👉 Слой utils состоит из сущностей, которые реализуют протоколы для получения данных
👉 Assets Manager - посредник между слоем utils и хранилищами. Главной целью является сопоставление типа кэширования и хранилища
👉 На уровне Caching Layer располагаются все хранилища. Работа происходит только с сырыми данными абстрактно от типа

#architecture
👍2👎1🔥1
Create a Scalable SwiftUI MVVM Project

MVVM состоит из следующих компонентов:
👉 View - компонент, который отображает свойства ViewModel, а также отлавливает взаимодействия с пользователям, вызывая ViewModel
👉 View Model инкапсулирует логику, включая вызовы API, обработку событий и данных, а также хранит важные свойства
👉 Model - представление данных. Объекты, созданные из результатов вызовов API

В статье более подробно описано то, как создать настоящий проект на данной архитектуре

#architecture
3👎1
Discover the MVVM Architecture in less than 90 seconds

Статья и видео с быстрым объяснением основной сути MVVM

#architecture
🔥5👎1
The Problems with Singletons and Why You Should Use DI Instead (10 мин)

Основные проблемы синглтонов:
👉 Синглтоны глобальные
👉 Вы не можете кастомизировать инициализацию
👉 Невозможно подменить зависимости
Подробнее о проблемах и способах решения в статье

#architecture
👍3
Исключения из принципа YAGNI

👉 Всё, что относится к правилу «ноль, один, бесконечность». Если в требованиях пункт «нам нужно сохранять адрес пользователя» превращается в «нам нужно сохранять два адреса», скорее всего лучше сразу обеспечить возможность сохранять много адресов
👉 Управление версиями. Не помешает заранее задуматься о том, как, допустим, система клиент – сервер будет распознавать разные версии и реагировать на них
👉 Логирование. Особенно в тех случаях, когда баги устраняются постфактум или в сложновоспроизводимых ситуациях
👉 Временные метки. Например, время создания или перехода в какое-либо состояние
👉 Реляционные базы данных. Большая часть данных реляционна по своей природе, поэтому нереляционная база – плохой выбор по умолчанию практически для любого приложения

#architecture
👍3👎2
Protocol Oriented Programming in Swift (4 мин)

Плюсы использования протоколов:
👉 Типы могут соответствовать и получать поведение по умолчанию от более, чем одного протокола (в отличие от наследования)
👉 Протоколам могут соответствовать классы, структуры и перечисления, в то время как наследоваться могут только классы
👉 Протоколы позволяют реализовать retroactive modeling благодаря расширениям

Когда они полезны?
👉 Для написания юнит тестов. Вы можете с лёгкостью подменить реализацию
👉 Протоколы позволяют скрыть типы пользовательских сценариев от view controller'ов, либо от любых других объектов

#architecture
🔥4👎3