0Pricing
Swift Academy · Ders

Coordinator Deseni

Gezinme akışı mantığını merkezileştirin.

Coordinator Deseni, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Gezinme Sorunu

Görünümler diğer görünümleri doğrudan push edip sunduğunda, gezinme mantığı uygulamanın geneline dağılır. Her ekranın kendisinden sonra gelecek ekranı bilmesi gerekir ve bu da sıkı bir bağımlılık oluşturur.

Koordinatör deseni, gezinmeyi özel nesnelere ayırarak bu sorunu çözer.

Koordinatör Nedir?

Koordinatör, tek görevi gezinme akışını yönetmek olan bir nesnedir. Sıradaki ekranın hangisi olacağına karar verir ve gösterilecek görünüm denetleyicilerini veya görünümleri oluşturur.

Görünümler yönlendirme konusunda pasif hâle gelir; yalnızca olayları bildirir, ne yapılacağına Koordinatör karar verir.

Koordinatör Protokolü

Çoğu uygulama, her Koordinatörün uyduğu küçük bir protokolle başlar.

protocol Coordinator: AnyObject {
    var childCoordinators: [Coordinator] { get set }
    func start()
}

Somut Koordinatör

Somut bir Koordinatör, bir gezinme denetleyicisine sahip olur ve ilk ekranı start() içinde oluşturur.

final class AppCoordinator: Coordinator {
    var childCoordinators: [Coordinator] = []
    let navigationController: UINavigationController

    init(navigationController: UINavigationController) {
        self.navigationController = navigationController
    }

    func start() {
        let vc = HomeViewController()
        navigationController.setViewControllers([vc], animated: false)
    }
}

Görünümleri Yönlendirmeden Ayırma

Temel fayda şudur: bir görünüm artık sıradaki ekranı oluşturmaz. Bunun yerine bir olayın gerçekleştiğini Koordinatörüne bildirir ve yönlendirmeyi Koordinatör yapar.

Böylece bir ekran, kodunu değiştirmeden farklı akışlarda yeniden kullanılabilir.

Olayları Üst Katmana Bildirme

Görünümler, Koordinatörleriyle bir delegate veya closure aracılığıyla iletişim kurar. Görünüm, sırada nereye yönlendirileceğini bilmez.

protocol HomeViewControllerDelegate: AnyObject {
    func homeDidSelectProfile()
}

final class HomeViewController: UIViewController {
    weak var delegate: HomeViewControllerDelegate?

    func profileTapped() {
        delegate?.homeDidSelectProfile()
    }
}

Yönlendirmeyi Ele Alma

Koordinatör, delegate protokolüne uyar ve olay tetiklendiğinde nasıl gezinileceğine karar verir.

extension AppCoordinator: HomeViewControllerDelegate {
    func homeDidSelectProfile() {
        let profile = ProfileViewController()
        navigationController.pushViewController(profile, animated: true)
    }
}

Alt Koordinatörler

Büyük akışlar (ilk kullanım ve ödeme) kendi child koordinatörlerine sahip olur. Üst koordinatör bir child başlatır ve hayatta kalmasını sağlamak için onu childCoordinators içinde tutar.

func startOnboarding() {
    let child = OnboardingCoordinator(navigationController: navigationController)
    childCoordinators.append(child)
    child.start()
}

Bellek Sızıntılarını Önleme

Üst koordinatör alt koordinatörleri tuttuğu için, akış sona erdiğinde bir child'ı kaldırmanız gerekir; aksi takdirde bellek sızıntısı oluşur. Yaygın bir yaklaşım, bitiş geri çağrısı kullanmaktır.

func childDidFinish(_ child: Coordinator) {
    childCoordinators.removeAll { $0 === child }
}

SwiftUI ile Koordinatörler

SwiftUI'da Koordinatörler genellikle bir NavigationStack yolunu yönetir. Koordinatör, gözlemlenebilir bir yola sahip olur ve görünümler bu yola yönlendirmeleri ekler.

final class Router: ObservableObject {
    @Published var path: [Route] = []

    func push(_ route: Route) {
        path.append(route)
    }
}

enum Route: Hashable { case profile, settings }

Faydaların Özeti

Koordinatör deseni size şunları sağlar:

  • Gezinmeyi sabit olarak içermeyen yeniden kullanılabilir görünümler
  • Kolayca değiştirilebilen merkezî akış mantığı
  • Kullanıcı arayüzünden ayrılmış sınanabilir yönlendirme
  • Alt koordinatörler aracılığıyla birleştirilebilir akışlar

Hızlı Kontrol

Koordinatörlerle ilgili anlayışınızı sınayın.

Özet

Koordinatör desenini öğrendiniz:

  • Koordinatörler gezinmenin sahibi olur ve görünümleri yönlendirme ayrıntılarından bağımsız tutar
  • Görünümler olayları delegate'ler veya closure'lar aracılığıyla üst katmana bildirir
  • Alt koordinatörler kendi içinde tamamlanan akışları modeller
  • Akışlar sona erdiğinde bellek sızıntılarını önlemek için alt koordinatörleri kaldırın

Koordinatörler, MVVM ile birlikte temiz ve sınanabilir bir mimariyi tamamlar.

Sıkça Sorulan Sorular

“Coordinator Deseni” dersi ücretsiz mi?

Evet — “Coordinator Deseni” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Coordinator Deseni” dersinde ne öğreneceğim?

Gezinme akışı mantığını merkezileştirin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Coordinator Deseni” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. MVVM Deseni
  2. Görünüm Modellerini Görünümlere Bağlama
  3. Coordinator Deseni
  4. Görünüm Modellerini Sınama
← Swift Academy Sayfasına Dön