Junior — Middle
Kur tiks struktūra, ja tās iekšienē ir lauks, kas ir klases instances?
sobes.tech AI
Atbilde no AI
iOS gadījumā, ja struktūra (struct) satur lauku, kas ir klases (class) instances, tad pati struktūra tiek vietu stekā, bet klases lauks — heapā.
Tas ir tāpēc, ka struktūras ir vērtību tipi, kas tiek glabāti tieši tur, kur tie ir deklarēti (parasti stekā), bet klases ir atsauces tipi, kuru objekti tiek glabāti heapā, un struktūrā tiek glabāta tikai atsauce uz šo objektu.
Piemērs:
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
struct MyStruct {
var obj: MyClass
}
var s = MyStruct(obj: MyClass(value: 10))
Šeit s ir struktūra, kas atrodas stekā, bet objekts MyClass(value: 10) ir heapā, un s.obj glabā atsauci uz šo objektu.