TGViewer
iOS Mobile | YeaHub iOS Mobile | YeaHub @yeahub_ios_mobile · 248 subscribers
Post #352 55
#полезное
😬 Создаем идеальный сетевой слой в Swift

Пора распутать URLSession вызовы в вашем коде и навсегда избавиться от этой проблемы.

Вместо URLSession.shared везде — создаем NetworkClient протокол:

protocol NetworkClient {
func send<T: Decodable>(_ request: URLRequest) async throws -> T
}


URLProtocolStub позволяет перехватывать все запросы и возвращать mock-данные. Никаких реальных API в тестах!

Dependency Injection:

class UserService {
private let networkClient: NetworkClient
init(networkClient: NetworkClient) {
self.networkClient = networkClient
}
}


Что получаем:

🟠 Один NetworkError enum вместо хаоса
🟠 Легко подменяемые зависимости
🟠 Async/await вместо completion handlers
🟠 Код, который не стыдно показать коллегам

👉Новости 👉База вопросов
More from @yeahub_ios_mobile
  1. Oct 16, 2026#documentation #конференции #тренды 📚 Конференции WWDC WWDC — это ежегодная конференция,…
  2. Oct 14, 2026#Собес #restapi #uikit #serialization 🤔 Middle+ iOS-разработчик в ВТБ Техническое собесед…
  3. Oct 9, 2026#course #ии 📚 Мини-курс о применении ИИ в разработке Он рассчитан на начинающих, пройти е…
  4. Oct 8, 2026#Собес #semaphore #mutex #synchronization 🤔 Для чего нужны Semaphore и Mutex? 💬 Кратко:…
  5. Oct 7, 2026#Собес #gesture #recognition 🤔 Что происходит с остальными gesture recognizers, когда оди…
  6. Oct 5, 2026#Собес #SwiftUI #@State #@Binding 🤔 В чем разница между @State и @Binding? 💬 Кратко: @St…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →