Middle
Көрүнүштөрдү кандай сактайт, алар шилтемелердин түрү болсо?
sobes.tech AI
AIден жооп
iOS'te (UIView we onuň subsklasslary) synklaslar bolup, olar referent görnüşlerdir. Olara salgylanmalary şu usullaryň kömegi bilen saklanýar:
-
Kömek salgylanmalar (Strong References):
- Esasan, eger siz UIView üçin aýratynlyk deklarasiýa edeniňizde
weakýa-daunownedgörkeziji ýok bolsa, bu güýçli salgylanma döredýär. - Güçli salgylanma obýektiň salgylanma sanawyny artdyrýar. Obýekt, iň az bir güýçli salgylanma bolmadykça, ýadyndan aýrylmaz.
- Bu, görünüşleri saklamagyň standart usulydyr, olary ýadynda saklamaly we elýeterli bolmaly bolsa.
//Güýçli salgylanma var myView: UIView = UIView() - Esasan, eger siz UIView üçin aýratynlyk deklarasiýa edeniňizde
-
Güçsüz salgylanmalar (Weak References):
weakaçar sözi bilen deklarasiýa edilýär.- Güçsüz salgylanma obýektiň salgylanma sanawyny ýokarlandyrmaýar.
- Güçsüz salgylanmalar obýektiň ýadyndan aýrylmagyna päsgel bermeýär, eger başga güýçli salgylanma ýok bolsa.
- Güýçli salgylanmalaryň aýlawlaryny öňlemek üçin ulanylýar, umumy ýagdaý — ene-çaga gatnaşyklary, enäniň güýçli salgylanmasy çaga üstünde, çaga käwagt ene üstünde salgylanma saklaýar. Bu ýagdaýda, ene-çaga arasyndaky yzyna salgylanma güýçsüz bolmaly.
- Güçsüz salgylanmalar optional bolmaly (
Optional), sebäbi obýekt aýrylyp biler wenilbolar.
weak var parentView: UIView? -
Unowned salgylanmalar (Unowned References):
unownedaçar sözi bilen deklarasiýa edilýär.- Güçsüz salgylanmalar ýaly, salgylanma sanawyny ýokarlandyrmaýar.
- Fark:
weak-den tapawutlylykda, unowned salgylanmalar optional däl. Olaryň çäkli, obýekt ýaşaýşynyň iň azyndan salgylanma saklaýançä dowam etmelidir. Eger, obýektiň boşadylmagyndan soň, unowned salgylanma arkaly erişilse, programma ýykylýar. - Bu, salgylanma obýektiň ýaşaýyş möhletiniň, onuň salgylanmasyna garamazdan, dowam etmegine ynam edilende ulanylýar. UIKit kontekstinde, bu
weak-den az ulanylýar.
//Düýpli, ýöne mümkin unowned var childView: UIView -
Massivler we kolleksiýalar:
- Görünüşlere salgylanmalary massivlerde (
Array), sözlüklərdə (Dictionary) ýa-da ýygnaklarda (Set) saklamak hem-de, bu usul bilen, elementlere güýçli salgylanma döredilýär.
var subviews: [UIView] = [] - Görünüşlere salgylanmalary massivlerde (
Salgylanma görnüşini saýlamak — güýçli, güýçsüz ýa-da unowned — belli bir ulanyş senarisi we obýektleriň ýaşaýyş möhletini dolandyrmak bilen baglanyşykly, ýadyň galmagynyň öňüni almak üçin. SwiftUI-da, görünüşleriň ýaşaýyş möhletini dolandyrmak düşünjeleri biraz tapawutly, ýöne UIKit kontekstinde, bu mehanizmler esasy salgylanma saklamanyň usullary bolup durýar.