Sobes.tech
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/init em Objective-C ou através de class em 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.