0Pricing
Swift Academy · Pelajaran

Cache Tata Letak dan Kinerja

Gunakan cache tata letak untuk efisiensi.

Cache Tata Letak dan Kinerja adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Mengapa Menggunakan Tembolok layout

SwiftUI mungkin memanggil sizeThatFits dan placeSubviews berkali-kali selama satu proses layout.

Jika perhitungan Anda mahal, tembolok memungkinkan Anda menghitung sekali lalu menggunakannya kembali, sehingga pekerjaan berulang dapat dihindari.

Jenis Terkait Tembolok

Protokol Layout memiliki tipe terkait Cache, yang secara bawaan berupa Void. Tentukan struct Anda sendiri untuk menyimpan hasil yang telah dihitung sebelumnya.

struct FlowLayout: Layout {
    struct CacheData {
        var sizes: [CGSize] = []
    }
    typealias Cache = CacheData
}

makeCache

Implementasikan makeCache(subviews:) untuk membangun tembolok awal. SwiftUI memanggilnya sekali sebelum metode layout, sehingga Anda dapat melakukan pengukuran awal di sana.

func makeCache(subviews: Subviews) -> CacheData {
    let sizes = subviews.map { $0.sizeThatFits(.unspecified) }
    return CacheData(sizes: sizes)
}

Membaca Tembolok

Metode layout kini menerima cache sebagai parameter inout. Bacalah nilai yang telah dihitung sebelumnya, bukan mengukur ulang setiap elemen turunan.

func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout CacheData) -> CGSize {
    let height = cache.sizes.map(\.height).max() ?? 0
    let width = cache.sizes.reduce(0) { $0 + $1.width }
    return CGSize(width: width, height: height)
}

updateCache

Saat kumpulan subtampilan berubah, SwiftUI memanggil updateCache(_:subviews:). Implementasi bawaannya membangun ulang melalui makeCache, tetapi Anda dapat menimpanya untuk melakukan pembaruan secara bertahap.

func updateCache(_ cache: inout CacheData, subviews: Subviews) {
    cache.sizes = subviews.map { $0.sizeThatFits(.unspecified) }
}

Kapan updateCache Berjalan

updateCache berjalan ketika jumlah atau identitas subtampilan berubah—bukan pada setiap perubahan kecil geometri. Simpan dalam tembolok hanya data yang bergantung pada subtampilan, bukan pada ukuran yang diusulkan.

Hanya Simpan Data yang Tidak Bergantung pada Usulan

Kesalahan umum adalah menyimpan hasil yang bergantung pada ukuran yang diusulkan. Usulan dapat berubah di antara panggilan, sehingga hasil yang bergantung pada ukuran harus dihitung ulang, bukan disimpan secara membabi buta.

// OK to cache: intrinsic child sizes
// NOT OK to cache: row breaks (depend on proposed width)

Menyimpan sizes Intrinsik

Pola yang aman adalah menyimpan hasil mahal dari sizeThatFits(.unspecified), lalu menjalankan perhitungan aritmetika pembungkusan yang ringan pada setiap panggilan menggunakan usulan saat ini.

struct CacheData { var intrinsic: [CGSize] = [] }
// wrapping uses cache.intrinsic + current maxWidth

Hindari Optimisasi Terlalu Dini

Untuk beberapa elemen turunan sederhana, pengukuran murah dan tembolok justru menambah kerumitan. Buat profil terlebih dahulu; gunakan tembolok hanya ketika pengukuran benar-benar mahal, misalnya untuk teks, gambar, atau layout bertingkat.

Tembolok dan Semantik Nilai

SwiftUI memiliki tembolok dan meneruskannya sebagai inout. Pertahankan tembolok sebagai tipe nilai biasa tanpa referensi ke tampilan, sehingga SwiftUI dapat mengelola lifetime-nya dengan aman.

struct CacheData {
    var sizes: [CGSize] // value types only
}

Mengukur Hasilnya

Gunakan Instrumen SwiftUI atau penghitung sederhana untuk memastikan tembolok benar-benar mengurangi jumlah panggilan pengukuran. Optimisasi tanpa pengukuran hanyalah tebakan.

Pemeriksaan Singkat: Tembolok layout

Uji pemahaman Anda tentang penyimpanan layout dalam tembolok.

Ringkasan: Tembolok layout dan Performa

Tipe terkait Cache dari protokol Layout, yang dibangun oleh makeCache dan diperbarui oleh updateCache, menyimpan pekerjaan mahal yang tidak bergantung pada usulan, seperti sizes intrinsik elemen turunan.

Jalankan perhitungan aritmetika yang ringan dan bergantung pada usulan pada setiap panggilan. Pertahankan tembolok sebagai tipe nilai tanpa referensi, hindari penyimpanan dalam tembolok terlalu dini, dan verifikasi manfaatnya dengan pembuatan profil sebelum menambah kerumitan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Cache Tata Letak dan Kinerja” gratis?

Ya — teks lengkap “Cache Tata Letak dan Kinerja” 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 “Cache Tata Letak dan Kinerja”?

Gunakan cache tata letak untuk efisiensi. 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 4 dari 4.

Berapa lama pelajaran “Cache Tata Letak dan Kinerja” 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. Dasar-Dasar Protocol Layout
  2. Mengukur Subview
  3. Membangun Tata Letak Alur
  4. Cache Tata Letak dan Kinerja
← Kembali ke Swift Academy