Sobes.tech
Junior — Middle

Ինչպե՞ս կարող եք ստեղծել տվյալների կառուցվածք, որը պահպանում է թեթև հղումներ օբյեկտների վրա:

sobes.tech AI

Պատասխան AI-ից

iOS-ում (Swift/Objective-C) օբյեկտների վրա թույլ չտվող հղումները պահելու համար տվյալների կառուցվածք ստեղծելու համար օգտագործվում է NSMapTable կամ NSHashTable դասը թույլ տված հղումների տարբերակով:

Թույլ տված հղումները թույլ են տալիս օբյեկտներին ազատվել հիշողությունից, եթե նրանց վրա չկա ուժեղ հղում, ինչը կանխում է հիշողության լճացումը:

Swift-ում NSMapTable-ի օրինակ՝

let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()

կողմնային նշում = "key" որպես NSString
օբյեկտ = NSObject()
mapTable.setObject(օբյեկտ, forKey: կողնային նշում)

օբյեկտ = nil // այժմ օբյեկտը կարող է հեռացվել հիշողությունից

եթե արժեք = mapTable.object(forKey: կողնային նշում) {
    տպել("Օբյեկտը գոյություն ունի")
} այլ {
    տպել("Օբյեկտը հեռացվել է")
}

Կարող եք նաև օգտագործել Weak wrapper — թաղանթ, որը ներքինում ունի թույլ հղում, եթե անհրաժեշտ է ձեր սեփական տվյալների կառուցվածքը:

Այսպիսով, թույլ հղումները պահելու համար օգտագործվում է NSMapTable՝ weak-to-weak կամ weak-to-strong կոնֆիգուրացիայով՝ ըստ խնդրի։