Sobes.tech
Junior — Middle

Автоматтык эс тутумду башкаруучу түзүлүшүндө циклик шилтемелер пайда болобу, бул мусор топтоого тоскоол болобу?

sobes.tech AI

AIден жооп

Ооба, iOS'то автоматтык эс тутумду башкаруу (ARC) колдонулуп жатканда, циклик шилтемелер (retain cycles) пайда болушу мүмкүн. Бул эки же андан көп объект бири-бирин күчтүү шилтемелер менен кармап турганда болот, бул шилтемелердин санагычын нөлгө жеткирбейт жана объекттер бошотулбайт.

Мындай кырдаалдардан алдын алуу үчүн, алсыз (weak) же ээлик кылбаган (unowned) шилтемелер колдонулат. Мисалы, делегаттар көбүнчө weak деп жарыяланат, циклдердин алдын алуу үчүн.

Мисал:

class Person {
    var apartment: Apartment?
}

class Apartment {
    weak var tenant: Person?  // алсыз шилтеме цикл түзүүнү алдын алат
}

let john = Person()
let unit4A = Apartment()
john.apartment = unit4A
unit4A.tenant = john

Бул мисалда, tenant алсыз шилтеме, ошондуктан цикл түзүлбөйт жана объекттер туура түрдө чогулткуч тарабынан бошотулат.