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