Junior — Middle
Em que lugar será colocada a estrutura se dentro dela houver um campo que seja uma instância de uma classe?
sobes.tech IA
Resposta da IA
No iOS, se uma estrutura (struct) contém um campo que é uma instância de uma classe (class), a própria estrutura é colocada na pilha, enquanto o campo de classe é colocado no heap.
Isto deve-se ao fato de que as estruturas são tipos de valor, que são armazenados diretamente onde são declaradas (normalmente na pilha), enquanto as classes são tipos de referência, cujos objetos são colocados no heap, e na estrutura apenas é armazenada uma referência a esse objeto.
Exemplo:
class MyClass {
var value: Int
init(value: Int) {
self.value = value
}
}
struct MyStruct {
var obj: MyClass
}
var s = MyStruct(obj: MyClass(value: 10))
Aqui, s é uma estrutura colocada na pilha, e o objeto MyClass(value: 10) está no heap, e em s.obj é armazenada uma referência a esse objeto.