Junior — Middle
Dasturda ma'lumotlarni saqlash uchun xotira tuzilmasi qanday tashkil etilgan?
sobes.tech AI
AIdan javob
iOS'da, dasturda ma'lumotlarni saqlash uchun xotira tuzilishi odatda quyidagicha tashkil etilgan:
- Stack (Yig'indi): lokal o'zgaruvchilar va funksiyalar chaqiruvlarini saqlaydi. Tez xotira ajratish va bo'shatish.
- Heap (Yig'ish): funksiyalar chaqiruvidan uzoqroq yashovchi ob'ektlar va tuzilmalar uchun dinamik xotira ajratish.
- Ma'lumot segmenti: statik va global o'zgaruvchilar uchun.
- Kod segmenti: dasturning mashina kodi uchun.
Masalan, Swift yoki Objective-C da sinf ob'ektini yaratganda, uning uchun xotira yig'ishda ajratiladi, va ob'ektga bo'lgan havola stackda saqlanadi. iOS'da avtomatik xotira boshqaruvi ARC (Automatic Reference Counting) orqali amalga oshiriladi, bu ob'ektlarga bo'lgan havolalar sonini kuzatadi va ular endi kerak bo'lmaganda xotirani bo'shatadi.
Misol:
class Person {
var name: String
init(name: String) {
self.name = name
}
}
func createPerson() {
let person = Person(name: "Ivan") // ob'ekt yig'ishda, havola stackda
print(person.name)
} // funksiyadan chiqish bilan, havola o'chiriladi, ARC ob'ektni bo'shatadi, agar boshqa havolalar bo'lmasa