Lazy Var

27 fevereiro, 2019

Em desenvolvimento mobile o poder de computação é muito limitado comparado à outras plataformas. Por esse motivo uma boa prática é criar objetos complexos somente quando precisamos deles.

Swift tem um mecanismo embutido na linguagem que permite o cálculo just-in-time para tarefas mais complexas chamado de lazy var. Esse tipo de declaração permite que a propriedade seja executada somente quando for solicitada pela primeira vez. Se nunca for solicitada, a propriedade nunca é executada.

No exemplo abaixo foram criadas quatro variáveis, duas com o indicador lazy e duas sem. Um breakpoint foi habilitado no início da função viewDidLoad. Quando o breakpoint é acionado somente as propriedades sem o indicador lazy são criadas. Como podemos confirmar no lldb:

Var criada

Ao avançar a execução do código, as propriedades do tipo lazy somente são criadas em tempo de execução.

Lazy var criada 1

Lazy var criada 2

Esta prática tem diversas utilidades e é muito comum em propriedades computadas. No exemplo abaixo, a propriedade lazy var fullName somente será criada na memória quando invocada. E como não foi chamada no teste não houve desperdício de memória, mesmo o objeto sendo instanciado.

Lazy var não invocada