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:
-
Güclü istinadlar (Strong References):
- Əsasən, əgər siz UIView üçün xüsusiyyət elan edirsinizsə və
weakvə yaunownedgö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() - Əsasən, əgər siz UIView üçün xüsusiyyət elan edirsinizsə və
-
Zəif istinadlar (Weak References):
weakaç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
Optionalolmalıdır, çünki obyekt silinə bilər və istinadnilolacaq.
weak var parentView: UIView? -
Unowned istinadlar:
unownedaç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
weakqədər yaygın deyil.
//Daha az tipik görünüşlər üçün, amma mümkündür unowned var childView: UIView -
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] = [] - Görünüşlərə istinadların massivlərdə (
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.