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-ზე.