Junior — Middle
Referans veri tipleri için bellek tahsisi ve serbest bırakma nasıl gerçekleşir?
sobes.tech yapay zeka
AI'dan gelen yanıt
iOS'te, referans tipleri (örneğin, sınıflar) için bellek dinamik olarak yığında (heap) tahsis edilir. Bir sınıf nesnesi oluşturulduğunda, sistem ona yığında bellek ayırır ve bu nesneye bir referans döner.
Bellek serbest bırakma, otomatik referans sayımı (ARC — Automatic Reference Counting) ile gerçekleşir. Her nesne, ona aktif referansların sayısını tutan bir referans sayacı içerir. Yeni bir referans oluşturulduğunda, sayaç artar ve referans silindiğinde veya nil yapıldığında azalır. Sayaç sıfıra ulaştığında, nesne otomatik olarak bellekten kaldırılır.
Örnek:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1: Person? = Person(name: "Иван") // referans sayısı = 1
var person2 = person1 // referans sayısı = 2
person1 = nil // referans sayısı = 1
person2 = nil // referans sayısı = 0, Person nesnesi bellekten kaldırılır
Bu şekilde, geliştirici belleği manuel olarak serbest bırakmak zorunda değildir — ARC bunu otomatik olarak yönetir.