0Pricing
Swift Academy · Ders

@ObservableObject ve @StateObject

@Published aracılığıyla SwiftUI görünümlerini yönlendiren başvuru türü modeller oluşturun.

@ObservableObject ve @StateObject, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. 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.

Hoş geldiniz

Birden çok görünüm arasında paylaşılan karmaşık durumlar için `ObservableObject`'e uyan başvuru türündeki modelleri kullanın; bu modellerin sahibi `@StateObject` olur veya modeller `@ObservedObject` tarafından gözlemlenir.

ObservableObject tanımlama

```swift class CartModel: ObservableObject { @Published var items: [CartItem] = [] @Published var total: Double = 0 func add(_ item: CartItem) { items.append(item) } } ```

@StateObject — sahiplik

```swift struct ShopView: View { @StateObject private var cart = CartModel() // owns the model var body: some View { CartList(cart: cart) } } ``` Görünüm modeli oluşturuyor ve modelin sahibi oluyorsa `@StateObject` kullanın.

@ObservedObject — harici sahiplik

```swift struct CartList: View { @ObservedObject var cart: CartModel // doesn't own; passed in var body: some View { List(cart.items) { item in Text(item.name) } } } ```

Fark

• `@StateObject` — görünüm modeli oluşturur; model yeniden çizimler arasında varlığını korur • `@ObservedObject` — model dışarıdan aktarılır; üst görünüm tarafından yeniden oluşturulabilir `@StateObject` gerektiğinde `@ObservedObject` kullanmak, modelin beklenmedik şekilde sıfırlanmasına neden olur.

objectWillChange aboneliği

SwiftUI, `@StateObject` veya `@ObservedObject` kullanıldığında `objectWillChange`'e otomatik olarak abone olur. Her `@Published` değişikliği görünümün yeniden çizilmesini tetikler.

El ile objectWillChange

```swift class Timer: ObservableObject { var count = 0 func tick() { objectWillChange.send() // manual notification count += 1 } } ```

İç içe ObservableObjects

SwiftUI, iç içe ObservableObjects'leri otomatik olarak gözlemlemez. Değişiklikleri el ile iletin: ```swift class Parent: ObservableObject { @Published var child = ChildModel() private var cancel: AnyCancellable? init() { cancel = child.objectWillChange.sink { [weak self] _ in self?.objectWillChange.send() } } } ```

@Observable makrosu (Swift 5.9)

```swift @Observable class Counter { var count = 0 } // No ObservableObject, no @Published, no @StateObject needed // SwiftUI automatically tracks access ```

ObservableObject'i sınama

```swift func testCart() { let cart = CartModel() cart.add(CartItem(name:"Apple",price:1.0)) XCTAssertEqual(cart.items.count, 1) XCTAssertEqual(cart.total, 1.0) } ```

Hızlı kontrol

`@StateObject` ile `@ObservedObject` arasında hangisini ne zaman kullanmalısınız?

Özet

Önemli noktalar: • `ObservableObject` + `@Published` = reaktif model • `@StateObject` — görünüm modelin sahibidir; model yeniden çizimler arasında varlığını korur • `@ObservedObject` — model dışarıdan aktarılır; sahiplik dışarıdadır • El ile bildirim göndermek için `objectWillChange.send()` • Swift 5.9'daki `@Observable` makrosu bunların çoğunun yerini alır Sıradaki konu: @EnvironmentObject.

Sıkça Sorulan Sorular

“@ObservableObject ve @StateObject” dersi ücretsiz mi?

Evet — “@ObservableObject ve @StateObject” 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.

“@ObservableObject ve @StateObject” dersinde ne öğreneceğim?

@Published aracılığıyla SwiftUI görünümlerini yönlendiren başvuru türü modeller oluşturun. 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 2. dersidir.

“@ObservableObject ve @StateObject” 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. @Binding: İki Yönlü Veri Akışı
  2. @ObservableObject ve @StateObject
  3. Paylaşılan Durum için @EnvironmentObject
  4. Tek Doğruluk Kaynağı ve Tek Yönlü Akış
← Swift Academy Sayfasına Dön