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-ում։