Sobes.tech
Middle

İstinad növü olan baxışlar necə saxlanılır?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-da (UIView və onun alt sinifləri) görünümlər siniflərdir, yəni, istinad növüdürlər. Onlara istinadların saxlanması aşağıdakı mexanizmlər vasitəsilə həyata keçirilir:

  1. Güclü istinadlar (Strong References):

    • Əsasən, əgər siz UIView üçün xüsusiyyət elan edirsinizsə və weak və ya unowned göstəricisi istifadə etmirsinizsə, bu güclü istinad yaradır.
    • Güclü istinad obyektdə istinadların sayını artırır. Obyekt, ona ən azı bir güclü istinad olduğu müddətcə yaddaşdan silinməz.
    • Bu, görünüşlərin yaddaşda qalması və əlçatan olması üçün standart yoldur.
    //Güclü istinad
    var myView: UIView = UIView()
    
  2. Zəif istinadlar (Weak References):

    • weak açar sözü ilə elan edilir.
    • Zəif istinad obyektin istinadların sayını artırmır.
    • Zəif istinadlar obyektin yaddaşdan silinməsini əngəlləmir, əgər ona güclü istinadlar qalmayıbsa.
    • Güclü istinadların dövrünü qarşısını almaq üçün istifadə olunur, tipik vəziyyət valideyn-uşaq münasibətidir, burada valideyn güclü istinadla uşağa bağlanır və uşaq bəzən valideynə istinad edə bilər. Bu halda, tərs istinad valideynə zəif olmalıdır.
    • Zəif istinadlar mütləq olaraq Optional olmalıdır, çünki obyekt silinə bilər və istinad nil olacaq.
    weak var parentView: UIView?
    
  3. Unowned istinadlar:

    • unowned açar sözü ilə elan edilir.
    • Güclü istinadlar kimi, onlar obyektdə istinadların sayını artırmır.
    • Fərq: zəif istinadlardan fərqli olaraq, unowned istinadlar opsional deyil. Onlar, obyektin ən azı onunla əlaqəli obyektin yaşam dövrü qədər yaşayacağına inanır. Obyektə unowned istinad vasitəsilə daxil olmaq, obyekt sərbəst buraxıldıqdan sonra, tətbiqin çökməsinə səbəb olacaq.
    • Bu, istinadın həyat dövrünün, ona istinad edən obyektin həyat dövrünü aşmadığından əmin olduğunuz zaman istifadə olunur. Görünüşlər kontekstində, bu weak qədər yaygın deyil.
    //Daha az tipik görünüşlər üçün, amma mümkündür
    unowned var childView: UIView
    
  4. Massivlər və Koleksiyalar:

    • Görünüşlərə istinadların massivlərdə (Array), lüğətlərdə (Dictionary) və ya toplamlarda (Set) saxlanması da, standart olaraq, elementlərə güclü istinadlar yaradır.
    var subviews: [UIView] = []
    

Seçim, güclü, zəif və ya unowned istinadlar arasında, istifadə ssenarisinə və obyektlərin həyat dövrünün idarə olunmasına bağlıdır, beləliklə yaddaş sızmalarının qarşısını alır. SwiftUI-də, görünüşlərin həyat dövrü idarəetmə konseptləri fərqlidir, amma UIKit kontekstində bu mexanizmlər, istinadların saxlanmasının əsas yoludur.