Initializer & deinit (kelas)
Buat initializer designated dan convenience, sediakan nilai bawaan, gunakan init yang dapat gagal bila diperlukan, dan pahami deinitializer kelas.
Initializer & deinit (kelas) adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. 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 3 pelajaran total.
Ikhtisar
Pelajaran ini membahas inisialisasi designated dan convenience, nilai bawaan, failable init, serta deinit pada kelas.
Dasar inisialisasi struktur
Struktur memperoleh inisialisasi per anggota. Berikan nilai bawaan untuk menyederhanakan pemanggilan.
struct User {
var name: String = "Guest" // default value
var age: Int
// memberwise init is synthesized: User(name:age:)
}
let u1 = User(name: "Ada", age: 20)
let u2 = User(age: 0) // uses default name
print(u1.name, u2.name)Inisialisasi designated
Inisialisasi designated memastikan semua properti tersimpan telah ditetapkan sebelum digunakan.
class Person {
let name: String
let id: Int
// Designated initializer: fully initializes stored properties
init(name: String, id: Int) {
self.name = name
self.id = id
}
}
let p = Person(name: "Bob", id: 1)
print(p.name, p.id)Inisialisasi convenience
Inisialisasi convenience harus mendelegasikan pemanggilan ke inisialisasi designated dalam kelas yang sama.
class Rectangle {
var width: Double
var height: Double
// Designated
init(width: Double, height: Double) {
self.width = width
self.height = height
}
// Convenience must call a designated initializer
convenience init(square side: Double) {
self.init(width: side, height: side)
}
}
print(Rectangle(square: 3).width)Inisialisasi yang dapat gagal
Gunakan init? untuk masukan yang dapat gagal divalidasi. Hasilnya bersifat opsional.
struct Email {
let value: String
init?(_ raw: String) {
guard raw.contains("@") else { return nil } // fail to initialize
self.value = raw
}
}
print(Email("a@b.com")?.value ?? "invalid")
print(Email("not email")?.value ?? "invalid")Deinisialisasi
Hanya kelas yang memiliki deinit, yang dipanggil saat instans didealokasi (ARC).
class TempResource {
let id: Int
init(id: Int) { self.id = id }
deinit { print("Releasing resource", id) }
}
do {
let r = TempResource(id: 42)
print("Using", r.id)
} // r goes out of scope; ARC may call deinit hereDesignated dibandingkan convenience
Pemeriksaan singkat: Inisialisasi mana yang pada akhirnya harus dipanggil oleh inisialisasi convenience?
Rangkuman
Rangkuman: Gunakan inisialisasi designated untuk menetapkan semua properti; tambahkan inisialisasi convenience untuk menyediakan cara pemanggilan yang lebih praktis; pertimbangkan init? untuk validasi; kelas melakukan pembersihan dalam deinit.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Initializer & deinit (kelas)” gratis?
Ya — teks lengkap “Initializer & deinit (kelas)” 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 3 pelajaran total.
Apa yang akan aku pelajari di “Initializer & deinit (kelas)”?
Buat initializer designated dan convenience, sediakan nilai bawaan, gunakan init yang dapat gagal bila diperlukan, dan pahami deinitializer kelas. 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 3.
Berapa lama pelajaran “Initializer & deinit (kelas)” 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
- Struct vs Class, properti & init
- Properti tersimpan vs terhitung, observer
- Initializer & deinit (kelas)