Bagaimana cara kerja Penghitung Referensi Otomatis di iOS? Sebenarnya, topik ini lebih mudah untuk saya pahami setelah saya mengenal Penghitung Referensi Manual. Ini adalah artikel yang sangat sederhana untuk membantu Anda mendapatkan pemahaman dasar tentang cara kerja manajemen memori di iOS.
Ada beberapa alat untuk manajemen memori di iOS:
MRC - Penghitung Referensi Manual
MRC adalah manajemen tautan manual melalui kode. Pada masa-masa awal dan zaman prasejarah, para pengembang mengelola sendiri penghitungan referensi melalui tim. Secara halus, itu sulit:
alokasikan - membuat objek (membuat tautan)
pertahankan - rujukan padanya (+1 ke tautan)
rilis - mengurangi jumlah referensi (-1)
dealloc - jika jumlah referensi 0 = unload dari memori
Pada dasarnya, Anda mengalokasikan objek, menyimpannya di beberapa titik, dan kemudian mengirim satu rilis untuk setiap alokasi / penyimpanan yang Anda kirim. Metode dealloc dipanggil pada suatu objek ketika dihapus dari memori.
Masalah:
Anda harus terus menghitung retensi, lepaskan
crash saat mengakses dari memori yang dibongkar
lupa menempatkan rilis - kebocoran memori
ARC - Penghitung referensi otomatis
, , , - iOS . . ARC . . , ARC , .
?
(release/retain - ) dealloc -
properties change - weak/strong
property :
strong - retain
weak - assign.
, ARC:
Mempertahankan siklus adalah ketika jumlah ruang yang dialokasikan dalam memori tidak dapat diperoleh kembali karena siklus penyimpanan. Karena Swift menggunakan Penghitungan Referensi Otomatis (ARC), loop penyimpanan terjadi saat dua objek atau lebih berisi referensi yang kuat satu sama lain. Akibatnya, objek-objek ini saling menyimpan dalam memori, karena jumlah penyimpanannya tidak akan pernah berkurang menjadi 0, yang akan mencegah fungsi deinit dipanggil dan memori kosong.
Solusinya sepele - membuat salah satu tautan menjadi lemah.
Artikel ini lebih mendasar dan pengantar dasar-dasar manajemen memori di iOS, untuk pemahaman konseptual yang mudah.