Manajemen Memori: ARC vs MRC di iOS

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.








All Articles