Proses pemusnahan pantas


Pemusnah dipanggil serta-merta sebelum tika kelas dikeluarkan. Gunakan kata kunci deinit untuk menandakan pemusnah, sama seperti cara fungsi permulaan ditanda dengan init. Pemusnah hanya berfungsi pada jenis kelas.


Prinsip proses pemusnahan

Swift secara automatik akan mengeluarkan kejadian yang tidak lagi diperlukan untuk mengeluarkan sumber.

Swift mengendalikan pengurusan ingatan kejadian melalui pengiraan rujukan automatik (ARC).

Biasanya tidak perlu membersihkan secara manual apabila contoh anda diuruskan. Walau bagaimanapun, apabila menggunakan sumber anda sendiri, anda mungkin perlu melakukan beberapa pembersihan tambahan.

Sebagai contoh, jika anda mencipta kelas tersuai untuk membuka fail dan menulis beberapa data, anda mungkin perlu menutup fail tersebut sebelum tika kelas dikeluarkan.

Sintaks

Dalam takrif kelas, setiap kelas boleh mempunyai paling banyak satu pemusnah. Pemusnah tidak mengambil sebarang parameter dan ditulis tanpa kurungan:

deinit {
    // 执行析构过程
}

Contoh

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

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

Hasil output pelaksanaan program di atas ialah:

1
0

Apabila rancangan = nil penyataan dilaksanakan Selepas itu, kalkulator menolak 1, dan memori yang diduduki oleh pertunjukan akan dikeluarkan.

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

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

var show: BaseClass? = BaseClass()

print(counter)
print(counter)

Hasil keluaran pelaksanaan program di atas ialah:

1
1