Junior — Middle
Quando se pode dizer que um objeto ou estrutura não está na pilha de memória?
sobes.tech IA
Resposta da IA
Um objeto ou estrutura não está na pilha de memória se for alocado dinamicamente ou tiver um tempo de vida prolongado que exceda o tempo de execução da função.
No iOS (e em geral no Swift/Objective-C):
- Variáveis locais e estruturas geralmente são colocadas na pilha.
- Objetos de classes (tipos de referência) são alocados no heap, e na pilha apenas uma referência a eles é armazenada.
- Se um objeto é criado através de
alloc/initem Objective-C ou através declassem Swift, ele é colocado no heap.
Exemplo em Swift:
func exemplo() {
let estruturaLocal = MyStruct() // na pilha
let objeto = MyClass() // objeto no heap, referência na pilha
}
Portanto, se uma variável é uma referência a um objeto de classe, o próprio objeto está fora da pilha, no heap.