Latest web development tutorials

Proses destructor Swift

Sebelum sebuah instance dari kelas dilepaskan, destructor disebut segera. Gunakan kata kunci deinit untuk menandai destructor, menggunakan sejenis fungsi inisialisasi init untuk menandai. Destructors hanya berlaku untuk jenis kelas.


Prinsip proses Destructor

Swift otomatis akan merilis contoh tidak lagi diperlukan untuk membebaskan sumber daya.

Swift oleh Menghitung Otomatis Referensi (ARC) menangani kasus manajemen memori.

Biasanya ketika Anda tidak perlu secara manual misalnya dilepaskan untuk membersihkan. Namun, bila menggunakan sumber daya mereka sendiri, Anda mungkin perlu melakukan beberapa pembersihan ekstra.

Misalnya, jika Anda membuat kelas khusus untuk membuka file dan menulis beberapa data, Anda mungkin perlu akan dirilis sebelum instance kelas untuk menutup file.

tatabahasa

Dalam definisi kelas, masing-masing kelas dapat memiliki paling banyak satu destructor. Destructor tanpa parameter apapun, tanpa kurung di kata-kata:

deinit {
    // 执行析构过程
}

contoh

var counter = 0;  // 引用计数器
class BaseClass {
    init() {
        counter++;
    }
    deinit {
        counter--;
    }
}

var show: BaseClass? = BaseClass()
print(counter)
show = nil
print(counter)

Output di atas eksekusi program adalah:

1
0

Ketika acara = pernyataan nil dijalankan, kalkulator minus 1, menunjukkan memori akan dibebaskan.

var counter = 0;  // 引用计数器

class BaseClass {
    init() {
        counter++;
    }
    
    deinit {
        counter--;
    }
}

var show: BaseClass? = BaseClass()

print(counter)
print(counter)

Output di atas eksekusi program adalah:

1
1