Sobes.tech
Junior — Middle

Эстутумду башкарууда кандай кыйынчылыктарга туш болуп, аларды кантип чечесиз?

sobes.tech AI

AIден жооп

iOS-də yaddaş idarəsi bir neçə çətinliklərlə üzləşə bilər:

  1. Güclü referans döngələri (saqlama döngələri) — iki obyekt bir-birinə güclü referanslar vasitəsilə müraciət etdikdə, bu yaddaş sızmasına səbəb olur.

    • Həll yolu: döngünü qırmaq üçün zəif (weak) və ya mülkiyyətsiz (unowned) referanslardan istifadə etmək.
  2. Resursların yanlış sərbəst buraxılması nəticəsində yaddaş sızması — məsələn, obyektlər həyat dövrü düzgün idarə olunmadığı üçün sərbəst buraxılmır.

    • Həll yolu: ARC (Avtomatik Referans Sayımı) istifadə etmək və referansları diqqətlə izləmək.
  3. Böyük yaddaş istifadəsi keşi və ya böyük məlumatların saxlanması ilə əlaqədardır.

    • Həll yolu: məlumatların saxlanmasını optimallaşdırmaq, zəif referanslardan istifadə etmək, keşi təmizləmək.
  4. Çox ipli və obyektlərə giriş problemləri — bu yarışlara və yaddaş idarəetmə səhvlərinə səbəb ola bilər.

    • Həll yolu: sinxronizasiya, növbələr və digər mexanizmlər üçün təhlükəsizlik mexanizmlərindən istifadə etmək.

Swift-də güclü referans döngüsünü qırmaq nümunəsi:

class Person {
    var name: String
    weak var apartment: Apartment? // zəif referans
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    unowned let tenant: Person // mülkiyyətsiz referens
    init(unit: String, tenant: Person) {
        self.unit = unit
        self.tenant = tenant
    }
}

Burada, PersonApartment bir-birinə müraciət edir, lakin referanslardan biri zəif və ya mülkiyyətsizdir ki, saxlanma döngüsü qarşısını alsın.