Depuração de código Swift: técnicas secretas e ferramentas poderosas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que "print" não é um método, mas um crime contra o tempo

\n

Sejamos honestos: cada um de nós já escreveu print("aqui_nunca_vai_entrar") pelo menos uma vez na vida e esperou que funcionasse. Às vezes, funcionava. Mas em projetos sérios, essa abordagem transforma o código em uma árvore de Natal com pisca-piscas de logs. A depuração de Swift é uma arte, e hoje vamos dissecá-la do início ao fim. Você aprenderá a parar de adivinhar e começar a "debugar" aplicativos iOS profissionalmente.

\n

Este artigo é para quem programa em Swift, mas sente que o Xcode pode fazer mais. Não vamos ensinar o básico — vamos mostrar como a depuração de código Swift pode ser rápida, eficiente e até divertida. Vamos nessa!

\n\n

1. Pontos de interrupção condicionais: seu detetive particular

\n

Um breakpoint comum interrompe a execução toda vez que chega a uma linha. E se o bug só aparecer na 1000ª chamada de uma função? Ou apenas quando userId == 42? É aí que entram os pontos de interrupção condicionais em Swift.

\n

Clique com o botão direito no breakpoint → selecione "Edit Breakpoint" → insira a condição.

\n\n

Exemplo: capturando um bug em um loop

\n
for index in 0..<items.count {\n    processItem(items[index]) // Bug quando index == 5\n}
\n

Coloque um breakpoint na linha processItem e insira a condição: index == 5. Agora o depurador parará exatamente onde é necessário. Sem pressionamentos desnecessários de F6.

\n\n

Blocos de ação: tornando o breakpoint mais inteligente

\n

Na mesma janela de edição, há o botão "Add Action". Você pode:

\n
    \n
  • Executar po variableName (print object) — exibe automaticamente o valor da variável.
  • \n
  • Reproduzir um som (sim, é verdade!) — útil quando a depuração está em segundo plano.
  • \n
  • Registrar uma mensagem no log — sem interromper a execução.
  • \n
\n

Ative a opção "Automatically continue after evaluating" — e você terá um super-logger que não trava o aplicativo.

\n\n

2. LLDB: o console que sabe tudo

\n

Muitos desenvolvedores ignoram o console de depuração, pensando que só existem po e p. Na verdade, o LLDB (Low Level Debugger) é o canivete suíço da depuração de Swift. Aqui estão 5 comandos que mudarão sua vida:

\n\n
    \n
  • po — imprime o objeto chamando description ou debugDescription. Ideal para objetos UIKit.
  • \n
  • p — imprime o valor, mas sem chamar description. Útil para tipos primitivos.
  • \n
  • v — mostra as variáveis no frame atual. Mais rápido do que olhar no painel Variables.
  • \n
  • expression — executa qualquer código Swift diretamente durante a pausa. Quer alterar o valor de uma variável? expression self.title = "Novo título".
  • \n
  • thread backtrace — mostra a pilha de chamadas. Se o aplicativo crashou, isso é a primeira coisa a fazer.
  • \n
\n\n

Exemplo ao vivo: alterando a UI em tempo real

\n

Imagine: você parou em um breakpoint no viewDidLoad. No console, digite:

\n
expression self.view.backgroundColor = .red\nexpression self.view.layoutIfNeeded()
\n

E pronto! A tela do simulador muda instantaneamente para vermelho. Assim, você pode testar animações, cores e textos sem reiniciar.

\n\n

3. View Debugging: espiando por baixo do capô da UI

\n

Bug de layout é um clássico. O botão não está no lugar certo, o label sobrepõe a imagem, ou as constraints se comportam como guerrilheiras. O View Debugging no Xcode é um raio-X para sua interface.

\n

Clique no botão "Debug View Hierarchy" (parece três quadrados) no painel inferior. Você verá uma cena 3D de todos os elementos da UI. Pode girar, ampliar, destacar constraints e ver seus valores numéricos.

\n\n

Técnica: "Pegue a constraint"

\n

Se um elemento não está no lugar certo, selecione-o na cena 3D e veja a lista de constraints. Linhas vermelhas indicam conflitos, li

Blogs

Book Recommendations