Sobes.tech
Junior — Middle

Yaddaşda və ya hansı mexanizmde, istinad sayğacını artırmayan və obyekti saxlamayan istinad idarə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

iOS-da, avtomatik yaddaş idarəetməsi (ARC) istifadə edilərkən, zəif (weak) istinadlar anlayışı mövcuddur. Zəif istinad, obyektə olan və referans sayını (retain count) artırmayan və obyekti yaddaşda saxlamayan istinaddır.

Belə istinadlar adətən ARC tərəfindən idarə olunan xüsusi yaddaş sahəsində saxlanılan zəif göstəricilər mexanizmi vasitəsilə həyata keçirilir. Zəif istinad göstərdiyi obyekt sərbəst buraxıldıqda, avtomatik olaraq nil-ə təyin olunur ki, asılı göstəricilər qarşısı alınsın.

Bu şəkildə, zəif istinad obyektin həyat dövrünə təsir etmir və onu yaddaşda saxlamır. Bu, məsələn, delegat və sahibi arasında döngüvi istinadların qarşısını almaq üçün faydalıdır.

Swift-də nümunə:

class Person {
    var name: String
    weak var delegate: PersonDelegate?
    init(name: String) {
        self.name = name
    }
}

protocol PersonDelegate: AnyObject {
    func didUpdateName()
}

Burada, delegate zəif istinaddır və referans sayını artırmır, həmçinin delegat obyektini saxlamır.