Swift программалоо тилинде күчтүү шилтемелер эмне үчүн керек?
sobes.tech AI
AIден жооп
Swift-деги күчтүү шилтемелер (strong references) объекттин эсинде калуусу үчүн зарыл, ал кеминде бир күчтүү шилтеме бар болсо. Алар шилтемелердин түрлөрү (кластар) үчүн алдын ала белгиленген жүрүм-турум.
Кайсы бир өзгөрмө же туруктуу класс мисалына шилтеме жасаганда, бул шилтеме алдын ала күчтүү болот. Бул ошол мисал үчүн шилтемелердин санын (reference count) көбөйтөт. Бардык күчтүү шилтемелер жок болуп калганда (мисалы, өзгөрмөлөр чегинен чыгып же nil берилсе), шилтемелердин саны нөлгө жетет, жана эс тутумду башкаруу системи (ARC - Автоматтык шилтемелердин саноо) ошол мисал үчүн колдонулган эс тутумду бошотот.
Күчтүү шилтемелердин негизги милдети — объектти эрте деалокициялоодон сактоо, ал дагы колдонулуп жатканда. Күчтүү шилтемелер жок болсо, объекттер каалаган убакта өчүрүлүшү мүмкүн, бул бошотулган эс тутумга кирүү ката (сагызган көрсөткүч ката) алып келет.
Бирок, күчтүү шилтемелер циклдерге (retain cycle) алып келиши мүмкүн, анда эки же андан көп объект бири-бирине күчтүү шилтемелерди сактайт, жана алардын бири-биринен башка тышкы шилтемелери жок болсо да, аларды бошотуу мүмкүн эмес. Мындай циклдерди алдын алуу үчүн, алсыз (weak) жана ээси жок (unowned) шилтемелер колдонулат.