Sobes.tech
Junior — Middle

Šta znači smeštaj klase u oblasti dinamičke memorije (heap) i zašto se to radi?

sobes.tech АИ

Одговор од АИ

Положај класе у области динамичке меморије (heap) значи да се примерци те класе креирају и чувају у heap-у, а не у стеку. У iOS-у (и уопште у објектно-оријентисаним језицима) објекти класа обично се алоцирају у heap-у како би се обезбедило динамичко управљање временом живота објеката.

Ово се ради да:

  • Објекти могу постојати независно од области видљивости функције у којој су креирани.
  • Управљати временом живота објекта ручно или аутоматски помоћу бројања референци (ARC у iOS-у).
  • Омогућити креирање објеката произвољне величине и сложености.

Пример у Swift-у:

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

func createPerson() {
    let person = Person(name: "Иван") // објекат се креира у heap-у
    print(person.name)
}

Овде, објекат Person се креира у heap-у, а променљива person је референца на тај објекат. Када променљива изађе из области, објекат може бити избрисан ако нема других референци на њега.