Sobes.tech
Junior — Middle

Ինչպե՞ս է կազմակերպված հիշողության կառուցվածքը տվյալների պահպանումը ծրագրում։

sobes.tech AI

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

iOS-ում հիշողության կառուցվածքը տվյալների պահեստավորման համար սովորաբար կազմակերպված է հետևյալ կերպ՝

  • Տող (Stack): պահում է տեղական փոփոխականները և ֆունկցիայի կանչերը: Արագ հիշողության բաժանում և ազատում:
  • Հավաք (Heap): դինամիկ հիշողության բաժանում օբյեկտների և կառուցվածքների համար, որոնք ապրում են երկար, քան ֆունկցիայի կանչը:
  • Տվյալների հատված: կայուն և գլոբալ փոփոխականների համար:
  • Կոդի հատված: ծրագրի մեքենայական կոդի համար:

Օրինակ, երբ դուք ստեղծում եք դասի օբյեկտ Swift կամ Objective-C-ում, հիշողությունը դրա համար բաժանվում է հավաքում, և օբյեկտի հղումը պահվում է տողում: iOS-ում ավտոմատ հիշողության կառավարումը իրականացնում է ARC (Automatic Reference Counting) միջոցով, որը հետևում է օբյեկտների հղումների քանակին և ազատում է հիշողությունը, երբ այն այլևս անհրաժեշտ չէ:

Օրինակ՝

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

func createPerson() {
    let person = Person(name: "Ivan") // օբյեկտ հավաքում, հղում տողում
    print(person.name)
} // ֆունկցիայից դուրս գալուց հետո հղումը հեռացվում է, ARC ազատում է օբյեկտը, եթե այլ հղումներ չկան