Sobes.tech
Junior — Middle

შეგიძლია ახსნა, რა ტიპის მეხსიერების გაჟონვები არსებობს პროგრამებში?

sobes.tech AI

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

iOS პროგრამებში მეხსიერების გაჟონვის ძირითადი ტიპები დაკავშირებულია ობიექტებზე არასწორად მართვასთან:

  • მტკიცე მიმაგრების ციკლები (Strong Reference Cycles) — როდესაც ორი ობიექტი აქვს ერთმანეთთან მტკიცე მიმაგრებები და არცერთი მათგანი ვერ თავისუფლდება.
  • დახურვილობების (Closures) გამო გაჟონვები — თუ დახურვა ძლიერი მიმაგრებით იჭერს self-ს, ეს შეიძლება გამოიწვიოს მიმაგრების ციკლი.
  • არათანადური რესურსები — ობიექტები, რომლებიც არ თავისუფლდებიან deinit-ის გამოძახების ან არასწორად გამოყენების გამო.

მაგალითი მტკიცე მიმაგრების ციკლის:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // მტკიცე მიმაგრების ციკლი

ამის თავიდან ასაცილებლად, გამოიყენება სუსტი (weak) ან არაოფიციალური (unowned) მიმაგრებები.