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) მიმაგრებები.