0Pricing
Swift Academy · Pelajaran

@Published dan Observasi dalam Combine

Memahami cara kerja @Published di balik layar untuk memancarkan perubahan melalui penerbit Combine.

@Published dan Observasi dalam Combine adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Selamat Datang

`@Published` adalah pembungkus properti dari kerangka kerja Combine yang memancarkan nilai baru melalui penerbit setiap kali properti berubah.

Dasar-Dasar @Published

```swift import Combine class Counter: ObservableObject { @Published var count = 0 } let c = Counter() let cancel = c.$count.sink { print("Count: \($0)") } c.count += 1 // "Count: 1" c.count += 1 // "Count: 2" ```

Protokol ObservableObject

```swift class ViewModel: ObservableObject { @Published var title = "Initial" @Published var items: [String] = [] } ``` Setiap kelas yang mematuhi `ObservableObject` secara otomatis mendapatkan penerbit `objectWillChange`.

Penerbit objectWillChange

```swift class VM: ObservableObject { @Published var name = "" } let vm = VM() let cancel = vm.objectWillChange.sink { print("Will change") } vm.name = "Alice" // "Will change" printed before assignment ```

@Published dengan @StateObject SwiftUI

```swift @StateObject var vm = ViewModel() // In View body: Text(vm.title) // Re-renders when vm.title changes ``` `@StateObject` memiliki ViewModel; `@ObservedObject` mengamati ViewModel yang dimiliki dari luar.

Merangkai Penerbit dari @Published

```swift class Search: ObservableObject { @Published var query = "" @Published var results: [String] = [] private var cancellables = Set() init() { $query .debounce(for: 0.3, scheduler: RunLoop.main) .sink { [weak self] q in self?.search(q) } .store(in: &cancellables) } } ```

@Published Memancarkan Nilai Sebelum Penetapan

`objectWillChange` memancarkan *sebelum* nilai baru disimpan: ```swift vm.objectWillChange.sink { _ in print("will change") } $count.sink { n in print("is \(n)") } // Order: "will change" then "is 1" ```

Menyimpan Langganan

```swift var cancellables = Set() c.$count .sink { print("\($0)") } .store(in: &cancellables) // cancellables keeps subscription alive ```

Keterbatasan @Published

• Hanya pada kelas (tipe referensi) • Tidak dapat digunakan pada konstanta `let` • Tidak berfungsi melintasi batas aktor tanpa isolasi eksplisit • Nilai dipancarkan *sebelum* penetapan selesai (semantik willSet)

Makro Observasi (Swift 5.9+)

Swift 5.9 memperkenalkan `@Observable` sebagai alternatif yang lebih sederhana: ```swift @Observable class Counter { var count = 0 } // No Combine import needed; SwiftUI auto-subscribes ```

Pemeriksaan Singkat

Kapan `@Published` memancarkan nilainya—sebelum atau sesudah properti ditetapkan?

Rangkuman

Hal-hal penting: • `@Published var x` mengekspos `$x` sebagai `Publisher` • `ObservableObject` mendapatkan penerbit `objectWillChange` secara otomatis • Memancarkan sebelum nilai baru disimpan (willSet) • Simpan langganan dalam `Set` • Swift 5.9: `@Observable` menggantikan sebagian besar kebutuhan `@Published` Berikutnya: komposisi pembungkus properti.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “@Published dan Observasi dalam Combine” gratis?

Ya — teks lengkap “@Published dan Observasi dalam Combine” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “@Published dan Observasi dalam Combine”?

Memahami cara kerja @Published di balik layar untuk memancarkan perubahan melalui penerbit Combine. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “@Published dan Observasi dalam Combine” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Membuat Pembungkus Properti Kustom
  2. Nilai Terproyeksi dengan $binding
  3. @Published dan Observasi dalam Combine
  4. Mengomposisikan Beberapa Pembungkus Properti
← Kembali ke Swift Academy