Sobes.tech
Junior — Middle

Կարող եք տալ օրինակ, երբ դասի օբյեկտը ստեղծվում է տախտակամածի վրա փոխարենը հողամասի վրա?

sobes.tech AI

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

iOS-ում, դասի օբյեկտները սովորաբար ստեղծվում են heap-ում, քանի որ դասերը հղումային տիպեր են: Սակայն, եթե օգտագործում եք կառուցվածքներ (struct), որոնք արժեքային տիպեր են, դրանք ստեղծվում են stack-ում:

Օրինակ՝

struct Point {
    var x: Int
    var y: Int
}

func createPoint() {
    let p = Point(x: 10, y: 20) // ստեղծվում է stack-ում
    print(p)
}

Այստեղ, Point-ը կառուցվածք է, և փոփոխական p-ը ստեղծվում է stack-ում: Օրինակ՝ դասերի համար՝

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

func createPerson() {
    let person = Person(name: "John") // օբյեկտ heap-ում, հղում նրա վրա stack-ում
    print(person.name)
}

Այսպիսով, դասի օբյեկտները ստեղծվում են heap-ում, իսկ կառուցվածքները՝ stack-ում։