Junior — Middle
W jakim miejscu zostanie umieszczona struktura, jeśli wewnątrz niej znajduje się pole będące instancją klasy?
sobes.tech AI
Odpowiedź od AI
W iOS, jeśli struktura (struct) zawiera pole, które jest instancją klasy (class), to sama struktura jest umieszczana na stosie, a pole-klasa na stercie.
Dzieje się tak, ponieważ struktury są typami wartości, które są przechowywane bezpośrednio tam, gdzie są zadeklarowane (zwykle na stosie), natomiast klasy są typami referencyjnymi, których obiekty są umieszczane na stercie, a w strukturze przechowywany jest tylko odnośnik do tego obiektu.
Przykład:
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
struct MyStruct {
var obj: MyClass
}
var s = MyStruct(obj: MyClass(value: 10))
Tutaj s to struktura umieszczona na stosie, a obiekt MyClass(value: 10) znajduje się na stercie, a w s.obj przechowywany jest odnośnik do tego obiektu.