Trilha de aprendizado de Swift
Entenda Trilha de aprendizado de Swift desde os fundamentos até os critérios de decisão da prática profissional.
LANGUAGE · 52 ARTICLES
Entenda Swift e Objective-C desde os fundamentos até os critérios de decisão da prática profissional.
Mapa do tópico
Entenda Trilha de aprendizado de Swift desde os fundamentos até os critérios de decisão da prática profissional.
Entenda Tipos e memória desde os fundamentos até os critérios de decisão da prática profissional.
Entenda Concorrência em Swift desde os fundamentos até os critérios de decisão da prática profissional.
Entenda Objective-C desde os fundamentos até os critérios de decisão da prática profissional.
Comece aqui
Um caminho dos fundamentos ao próximo passo.
Ao aprender Swift, o primeiro obstáculo é Optional. O ponto de interrogação de String?, if let, guard let, ! e ??. Como há muitas formas sintáticas, memorizar cada uma separadamente pode misturar as regras.
Ler artigoNo capítulo sobre closures, deixamos uma pergunta em aberto ao explicar como quebrar ciclos de referência com [weak self]. Também existe unowned: qual é a diferença e quando usar cada um? Para responder, primeiro precisamos entender como o ARC funciona por baixo.
Ler artigoNo await, quem pausa é a função, não a thread. Explicamos o significado exato de suspension: a função armazena seu estado no heap e devolve a thread ao pool cooperativo, e por que await sequencial não é execução paralela.
Ler artigoTodos os artigos
Em 2019, após o Swift 5 e o iOS 12.2, os apps ficaram menores graças à estabilidade do ABI. Resumimos como o runtime do Swift passou de cada app para o sistema operacional, além da estabilidade de módulos e dos trade-offs de @frozen.
Ler artigoO eixo síncrono/assíncrono indica quem acompanha a conclusão da tarefa, enquanto bloqueante/não bloqueante indica se o controle é devolvido imediatamente. Este guia explica por que os dois eixos independentes geram as quatro combinações 2×2, com exemplos em Swift.
Ler artigoRecursos como identificadores de arquivo e locks só fazem sentido quando existe uma única instância, portanto não devem ser copiados. Veja como marcar a não copiabilidade no tipo com ~Copyable do Swift 5.9, além de borrowing, consuming e inout e seus usos.
Ler artigoOs macros do Swift 5.9 são plugins de geração de código conectados ao compilador. Explicamos como recebem a árvore sintática e devolvem código, suas duas variantes —freestanding(#) e attached(@)— e o custo de criá-los.
Ler artigoO tamanho de um struct não é simplesmente a soma dos tamanhos de suas propriedades. Reunimos medições de size, stride e alignment, padding, Optional com extra inhabitant e o existential container de 64 bits.
Ler artigoChamadas de métodos são compiladas como chamadas diretas, vtable ou objc_msgSend. Este artigo explica por que final e private melhoram o desempenho, a armadilha das extensões de protocolos e como verificar tudo com um profiler.
Ler artigoAo adicionar um observador, o runtime substitui dinamicamente a classe do objeto por uma subclasse. Este texto explica isa-swizzling, por que class mente e quando não há notificações sem passar pelo setter.
Ler artigoA concorrência estruturada responde quem é responsável pelo fim das tarefas assíncronas. Este artigo resume por que tarefas filhas não podem sair do escopo pai, como sinais de cancelamento são propagados e quais garantias precisam ser recuperadas manualmente ao usar Task.detached.
Ler artigoAo ativar o modo Swift 6, erros de concorrência surgem por toda parte, com Sendable no centro. Este artigo explica o significado desse protocolo e se valores podem atravessar limites de isolamento, organizando a migração em: transformar em struct, tornar imutável ou promover a actor.
Ler artigoCategorias não podem adicionar ivar, mas podem associar valores usando Associated Objects. Este texto explica o armazenamento em uma tabela lateral ao objeto, a implementação completa de propriedades em categorias e a política de memória em que só é preciso ter cuidado com assign.
Ler artigoDelegates e closures atendem às mesmas necessidades de callback, mas têm características diferentes. Implementamos o mesmo exemplo lado a lado para revelar cinco diferenças práticas e resumir como escolher com base na quantidade de eventos, na duração da relação e na necessidade de um valor de retorno.
Ler artigoactor é o quarto tipo do Swift e protege o próprio estado. Veja como serializar o acesso permite ao compilador detectar condições de corrida, incluindo a conhecida armadilha da reentrada.
Ler artigo