Sobes.tech
Junior — Middle

რისი მიკრძალავს სუსტი მითითებების გამოყენებას და რა არის მათი ქცევის თავისებურებები?

sobes.tech AI

პასუხი AI-სგან

iOS-ում թույլ հղումները (weak references) օգտագործվում են ուժեղ հղումային ցիկլերի և հիշողության արտահոսքների կանխարգելման համար: Դրանք չեն ավելացնում օբյեկտի հղումների հաշվիչը, հետևաբար, օբյեկտը կարող է դեինիցիալիզացվել, նույնիսկ եթե դրա վրա կա թույլ հղում:

Հատկություններ և սահմանափակումներ:

  • Եթե այն օբյեկտը, որի վրա հղում է թույլ հղումը, ջնջվի, թույլ հղումը ավտոմատ կերպով կդառնա nil:
  • Թույլ հղումները չեն կարող օգտագործվել այն տիպերի հետ, որոնք չեն աջակցում ավտոմատ զրոյացմանը (օրինակ, ARC-ի կողմից կառավարվող օբյեկտներ):
  • Թույլ հղումների օգտագործման ժամանակ, միշտ պետք է ստուգել, արդյոք դրանք nil են, նախքան օգտագործելը, որպեսզի խուսափեք փլուզումներից:

Օրինակ:

class Person {
    var name: String
    init(name: String) { self.name = name }
}

var person: Person? = Person(name: "Иван")
weak var weakPerson = person

person = nil
print(weakPerson) // Ցույց կտա nil, քանի որ օբյեկտը ջնջվել է

Այսպիսով, թույլ հղումները օգնում են հիշողության կառավարում, բայց պահանջում են զգուշավոր օգտագործում և nil ստուգում: