Ответ
Да, в моем профиле на GitHub представлены проекты на Swift, демонстрирующие различные аспекты разработки под iOS:
- SwiftUIAnimations – Коллекция кастомных анимаций и переходов на SwiftUI с подробными примерами и документацией по использованию.
- CleanArchitectureMVVM – Шаблон production-приложения, реализующий принципы чистой архитектуры (Clean Architecture) с использованием Combine для реактивного связывания данных.
- NetworkLayer – Универсальный, типобезопасный сетевой слой с поддержкой современных протоколов (
async/await), обработкой ошибок и кэшированием.
Пример ключевого протокола из NetworkLayer:
protocol NetworkServiceProtocol {
func fetch<T: Decodable>(_ endpoint: Endpoint) async throws -> T
}
Ссылка на профиль: github.com/username Все репозитории содержат модульные тесты, документацию в виде README и соответствуют современным практикам Swift.
Ответ 18+ 🔞
А, ну это ж мой GitHub, да? Смотри, тут у меня, блядь, как на витрине, разложено, что я понаписал на Swift. Не просто "Hello, World!", а чтоб с толком, с расстановкой, понимаешь?
Вот, например, SwiftUIAnimations — это я там поиздевался над анимациями в SwiftUI. Не эти ваши стандартные withAnimation, а чтоб всё кастомное, блядь, красивое. Там переходы всякие, морфинги, пружинки — в общем, чтоб глаз радовался, а не щемило от убогости. И всё с примерами, дурак разберётся.
Потом, CleanArchitectureMVVM — это, сука, моя попытка навести порядок в этом бардаке. Чистая архитектура, всё по полочкам: Use Cases, Repositories, ViewModels. А данные между ними бегают через Combine, реактивно, блядь. Не то что эти ваши костыли с делегатами на тысячу строк. Продакшен-шаблон, в общем, бери и делай.
И коронный номер — NetworkLayer. Сетевой слой, который не стыдно показать. Универсальный, типобезопасный, ёпта. Запрос — ответ, и всё знает, какие модели должны прилететь. Под капотом async/await, конечно, не то что в каменном веке живём. Ошибки ловит, кэширует, если надо. Красота.
Вот, смотри, кусочек оттуда, мозг не сломаешь:
protocol NetworkServiceProtocol {
func fetch<T: Decodable>(_ endpoint: Endpoint) async throws -> T
}
Красиво же, блядь? Один метод, а работает на всё. Говоришь ему: «Принеси-ка мне список пользователей, Decodable модель такую-то». И он приносит. Не принёс — исключение кидает. Всё честно.
Завалиться посмотреть можно сюда: github.com/username Во всех репозиториях, ядрёна вошь, ещё и тесты накручены, и README с пояснениями. Не какой-нибудь голый код, который только я один и понимаю. Всё как у взрослых, блядь.