Conteúdos sobre Swift e Desenvolvimento iOS. Esse Pela escassez de conteúdo em Português, incluímos conteúdos em inglês na lista, que estão destacados com a tag [en]
.
Como contribuir
Para contribuir com o projeto, crie seu fork e submeta um PR. As instruções podem ser encontradas no arquivo CONTRIBUTING.md. Quanto mais conteúdo, melhor 🙂
Comunidade
Além de todo o conteúdo agrupado neste projeto, temos também uma comunidade para dar suporte ao seu aprendizado. Faça uma pergunta, compartilhe seu aprendizado e acompanhe os últimos anúncios e votações.
Sumário
- Conteúdo
- Cursos
- Ferramentas e Recursos
- Blogs e Plataformas
- Livros
- YouTube
- Podcasts
- Playground
- Roadmaps
- Redes Sociais
Conteúdo
- Linguagem
- Tutoriais
- Arquiteturas
- Padrões de Projeto
- UI
- Networking
- Gerenciamento de Dependências
- Persistência
- Reatividade
- Segurança
- Acessibilidade
- Testes
Linguagem
- Como programar em Swift no Linux - ReisDev
- Conhecendo o Swift - Raline Silva
- Porque priorizar Collection.isEmpty em vez de Collection.count - Jonatan Medina
- Arrays em Swift - André Porto
Variáveis, Structs e Classes
- Variáveis e Constantes em Swift - ReisDev
- Entendendo value types e reference types em Swift - Victor Martins
- O que são Classes e Struct, as diferenças e quando usar - Giovanna Moeller
- Classes vs. Structs no Swift: Qual utilizar, e quando? - André Porto
- Uso de Struct e Class em Swift - Amanda Paiva
- Protocolos em Swift: Uma abordagem didática - Caio Santos
- Propriedades em Swift - Pedro Menezes
- Como funcionam os modificadores de acesso? - Giovanna Moeller
- Você sabe o que são Property Wrappers? Parte 1 - Marcos Lacerda
- Você sabe o que são Property Wrappers? Parte 2 - Marcos Lacerda
- Property Wrappers em Swift - André Porto
- 🎬 O que são variáveis? - Swift para todos
- 🎬 Struct ou Class, pra que serve? - DevPoli
- 🎬 Lazy Var e Computed Properties - Qual a diferença? - DevPoli
- Introdução à Herança em Swift - André Porto
- Swift — Self vs self - Jonatan Medina
Funções e Closures
Optional
- Optional em Swift - ReisDev
- Opcionais em Swift: como utilizar? - Giovanna Moeller
- Entendendo o uso de Generics: Por quê e como utilizar? - Giovanna Moeller
- Entendendo [weak self] no Swift - Jonatan Medina
- Opcionais em Swift: Lidando com Valores Possivelmente Nulos - Sarah Silva
Protocolos
- Entendendo a Programação Orientada a Protocolos em Swift - DIO
- Protocolos em Swift: Quando e como utilizar - Guilherme Trevisan
- Programação Orientada a Protocolos (POP) em Swift - Paula Vaz
- Desmistificando a programação orientada a protocolos - Marcos Lacerda
- Swift from Scratch: Herança e protocolos - Tuts+
- Programação orientada a protocolo em Swift 2 - Tuts+
- Swift: Extendendo Protocolos - RedSpark
- Programação Orientada a Protocolo - equinociOS
- POP: Programação Orientada a Protocolo - Sobrinho de TI
- Protolocos em Swift: Uma abordagem didática - Caio Santos
- Entenda o que Protocolos e o Caribe têm em comum - Diego Ferreira
- 🎬 Swift na prática: Uso de protocolos (Parte 1) - Comitando
- 🎬 Swift na prática: Uso de protocolos (Parte 2) - Comitando
- 🎬 Como implementar um protocol em Swift - DevPoli
- 🎬 Como criar um método opcional em um protocolo com Swift - BackFront Academy
Codable e JSON
- Como decodificar JSON em Swift - ReisDev
- Conversão de Dados com Codable (Encodable e Decodable) - Giovanna Moeller
- Decodificando JSON com Swift 4 - Mateus Silva
- Decodificando JSON com Swift 4 (parte 2) - Mateus Silva
- Gerenciamento de memória no iOS — weak, strong e unowned - Décio Montanhani
Concorrência
- Concorrência em iOS: A Teoria por Trás do Grand Central Dispatch - Laura Pinheiro
- Race Condition e Data Race: Criando Classes Threadsafe em Swift - Laura Pinheiro
- Concorrência em Swift - Brenno
Gerenciamento de Memória e ARC
- weak self, escaping coluses e capture list - Fernando Luiz Goulart
- Analisando problemas de memory leak - Vinicius Mesquita
- 🎬 Automatizando a detecção de vazamento de memória - Comitando
- 🎬 Desvendando o ARC do Swift - DevPoli
Timer
Tutoriais
- Desenvolvimento iOS: Um guia para iniciantes
- Como desenvolver seu próprio gerador de senha no iOS - Victor Catão
- iOS App Dev Tutorials - Apple [en]
- SwifUI Tutorial - Apple [en]
Vídeos
- 🎬 Xcode: Como criar um aplicativo iOS do zero (para iniciantes) - Tiago Aguiar
- 🎬 Como criar um app iOS no Xcode sem Storyboard - DevPoli
- Criação de Apps para iOS com SWIFT 2023 - Bruno Santos
Arquiteturas
- As 5 arquiteturas iOS mais utilizadas - Zup
- Principais arquiteturas para aplicações iOS - Objective
- Principais Arquiteturas de Software e sua importância para o desenvolvimento - André Porto
- Entendendo os padrões de modelagem MVC, MVP e MVVM - ENG
- Benefícios mais comuns entre arquiteturas iOS - Yasmin Benatti
- Um estudo comparativo entre padrões arquiteturais para o desenvolvimento de aplicativos para a plataforma iOS - Ícaro Lima
- 🎬 Aproximando Arquiteturas do Negócio - Bruno Ramos
MVC
- Qual a melhor arquitetura para aplicações iOS? MVC? - Geraldo Bastos
- 🎬 Aplicando o padrão de projeto MVC em aplicativos iOS - Developer Academy PUC-Rio
MVVM
- Qual a melhor arquitetura para aplicações iOS? MVVM? - Geraldo Bastos
- MVVM-C em ViewCode - Michelli Cristina
- Arquitetura MVVM - Pomo Docs
- iOS Architecture: MVVM-C [en]
- SwiftUI MVVM-C Template - Gustavo Alencar Silva
- 🎬 (Re)Começando com SwiftUI + MVVM - Cícero Camargo CODEMUS
- 🎬 Como montar o MVVM no Swift - DevPoli
- 🎬 Aplicando MVVM - Pedro Lagosta
VIP/VIPER/CLEAN
- Arquitetura Limpa (CLEAN) - Rayana Prata
- Arquitetura iOS: VIP - Fabio Miciano
- Clean Swift (VIP): Como organizar melhor nossos códigos - Leonardo de Geus
- 🎬 Aplicando Clean Code - Pedro Lagosta
- 🎬 Migrando tela de MVC para VIP - Comitando
- 🎬 Refatorando MVVM para VIP - Pedro Lagosta
- 🎬 Explicando a ARQUITETURA LIMPA! Como implementar o VIP? - Attekita Dev
MVP
Padrões de Projeto
- Padrões de Projeto em Swift - Refactoring.Guru
- Princípios SOLID para Swift - Yago Vanzan
- Utilizando o Princípio da Responsabilidade Única em Swift - Amanda Paiva
- Padrão Command - Rodolfo Comparsi
- 🎬 Usando pop, injeção de dependência e Factory - Pedro Lagosta
- Design Patterns em Swift [en]
- iOS Good Practices [en]
Delegate
- Protocol Delegate em Swift - Cassia Barbosa
- 🎬 Pra que serve o delegate em Swift - DevPoli
- 🎬 Aplicando Delegate Pattern - Pedro Lagosta
- 🎬 iOS Delegate: Como funciona e o que é - Tiago Aguiar
- 🎬 Delegate e Protocol - Tiago Aguiar
- 🎬 O que é Delegate, para quê serve e como usar - Swift para todos
Injeção de dependência
Coordinator
- O que é, para que serve e como usar coordinator em iOS? - Gabriel Batista
- 🎬 Criando Coordinator - Pedro Lagosta
UI
Geral
-
Diferenças na construção de layout com Storyboard, XIB e View Code - Alura
-
iOS do princípio com Swift: Básico de Auto Layout - Bart Jacobs
Vídeos
SwiftUI
- SwiftUI irá substituir o Swift? - Cassiane de Freitas
- SwiftUI: dicas para quem quer começar a desenvolver - Arthur Givigir
- Montando um Design System com SwiftUI - Vinicius Carvalho
- SwiftUI Notes
Elementos
Vídeos
- 🎬 Introdução ao SwiftUI - Construindo aplicativos iOS - Giovanna Moeller
- 🎬 Introdução Ao SwiftUI - Como Criar O Primeiro Aplicativo [Ponta-a-Ponta] - Irmandade Swift
- 🎬 SwiftUI: Como começar do zero no desenvolvimento iOS moderno - Tiago Aguiar
- 🎬 Aprenda a criar apps nativos de iPhone no Xcode - Guia Completo: SwiftUI - Irmandade Swift
- 🎬 SwiftUI para desenvolvedores UIKit - Hugo Silva
- 🎬 SwiftUI: Animações no iOS - Tiago Aguiar
- 🎬 Como Criar Um Aplicativo iOS no Xcode (Super Simples!) - SwiftUI Tutorial - Tiago Aguiar
- 🎬 Hacking with iOS: SwiftUI Edition [en]
Storyboard
- Desmistificando Storyboards - equinociOS
- UIKKit, Storyboard e Padrão delegate - Ândriu Felipe
- Storyboard - Kodeco [en]
Vídeos
View Code
- View Code em Swift - Cassia Barbosa
- Implementando interfaces iOS em View Code - ioasys-voices
- Curso iOS: Módulo sobre view code - Thiago Lioy
- Com quantas views se faz uma App? - equinociOS
- Como começar com ViewCode no iOS - João Alexandre
- Como criar um app iOS em ViewCode - ReisDev
- Componentes Customizáveis usando View Code (iOS) - Francisco Samuel
- Como utilizar ViewCode - Brenno Rodrigues
- Como iniciar um projeto em Swift usando View Code - Douglas Cardoso
- ViewCode + AutoLayout - Kodeco [en]
- ViewCode + SnapKit - Kodeco [en]
Vídeos
- 🎬 Como usar o ViewCode sem Storyboard - BackFront Academy
- 🎬 Como criar um app para iOS em ViewCode - ReisDev
- 🎬 Como funciona a UIStackView - DevPoli
- 🎬 Como criar uma tela usando ViewCode - Swift para todos
- 🎬 Como criar componentes em Swift usando ViewCode - Swift para todos
- 🎬 Como utilizar UIStackView com ViewCode - Swift para todos
UIKit
- Primeiros passos com UIKit - Tuts+
- Ciclo de vida de uma UIViewController em Swift - André Porto
- UIKit: Renderizando componentes no SwiftUI - ioasys-voices
UITableView
- Delegate e DataSource: Dando Vida a UITableView - Tiago Aguiar
- Como separar o Delegate e o DataSource da ViewController? - Michelli Cristina
CoreAnimation
Vídeos
- 🎬 UIScrollView vs. UICollectionView - Comitando
- 🎬 Introdução ao uso de UITableView - Comitando
- 🎬 Trabalhando com Sections na UITableView - Comitando
- 🎬 Manipulando células customizadas na UITableView - Comitando
Animações
Vídeos
Networking
- Async/Await: Camada Network genérica com Swift 5.5 - Victor Catão
- Usando Codables em Swift 5 para consumir uma API de filmes - Lucas Fernandez
- Como fazer um GET em Swift 4.2 - Gois
- Modularizando a camada de rede em Swift com Combine - Marcelo Henrique
- Consumindo API com SwiftUI - Tamara Erlij
Vídeos
- 🎬 Buscando dados da API de forma SIMPLES - DevPoli
- 🎬 Consumindo dados de uma API em Swift - Pedro Cacique
- 🎬 Criando camada Service - Pedro Lagosta
- 🎬 Construindo camada de Network com URLSession e aplicando TDD - Comitando
- 🎬 Continuação da camada de Network, testando múltiplos cenários - Comitando
Gerenciamento de Dependências
- Instalação e uso do gerenciador de dependências CocoaPods - Giovanna Moeller
- Gerenciadores de dependências iOS - tokenlab
- Carthage: Um gerenciador de dependências para projetos Xcode - infoq
Persistência
- Aprendendo CoreData com SwiftUI - Academy IFCE + Alley Pereira
- CoreData - Uma introdução à Persistência em iOS - Guilherme Paciulli
- Persistência de dados usando CoreData - equinociOS
- Persistência de Dados em Swift: Visão geral para Apps iOS Extraordinários - Erick Rocha
- Introdução ao uso poderoso do SwiftData para persistência de dados em SwiftUI - Rodolfo Comparsi
- Guia sobre SwiftData - Models - Bruno Faganello
Vídeos
Reatividade
- Resumo básico de RxSwift - Hoff Silva
- Swift Combine - Vinicius Mangueira
- Comparando RxSwift e Combine - Anthony Gianeli
- Como inserir RxSwift + programação funcional naquele seu projeto que está 90% concluído - Bruno Bilescky
- The Ultimate Combine Framework Tutorial in Swift [en]
Segurança
- Segurança em dispositivos iOS - Daiane Santos
- Criptografia para dispositivos iOS - Vinicius Mangueira
- Defesas anti-reversão para iOS [en]
- SSL Pinning - Flawless App Stories [en]
Acessibilidade
- Tornando o seu app acessível por todos no iOS - Gustavo Severo
- Voice Over - Acessibilidade em iOS - Renan Germano
- Criando uma solução acessível para o One Time Code - André Salla
- Já parou para pensar se seu app é acessível? - iMasters
- Desvendando a acessibilidade dos aplicativos móveis - Levxyca
Vídeos
- 🎬 Desenvolvimento Acessível - Codando com Moa
- 🎬 Como dar foco no ELEMENTO com ACESSIBILIDADE - BackFront Academy
- 🎬 Testes de Acessibilidade Digital e Mobile Banking - Flávia Aparecida, Caroline Pimenta
- 🎬 Como Adicionar Acessibilidade em Componentes iOS com Swift - Programou
Testes
- Introdução aos Testes Unitários em Swift: Vantagens, Desvantagens e Etapas - André Porto
- iOS Teste Unitário e Teste de UI - Hoff Silva
- Escrevendo testes unitários em cenários caóticos: uma abordagem prática - Renato Felício
- Escrevendo Testes Unitários para uma ViewController com TableView - Leonardo Cunha
- Testes unitários em Swift com MVVM - SoftDesign
- Testes automatizados com XCTest Framework para teste de app iOS - Amanda Lacerda
- Test Doubles em Swift (Ou o isolamento de testes unitários) - Matheus de Vasconcelos
- iOS Tests 101 - Yasmin Benatti
- Como Utilizar ‘Mocks’, ‘Strategy’ e Programação Orientada a Protocolos com Swift para Melhorar seus Testes - Igor Silva
Vídeos
- 🎬 Automação de testes NATIVA para iOS com XCUITest - qazando
- 🎬 Lidando com FileManager em testes unitários - Comitando
- 🎬 Escrevendo testes de UI - Comitando
- 🎬 Criando Testes Unitários - Pedro Lagosta
- 🎬 Criando Testes Unitários na prática - Pedro Lagosta
- 🎬 [Devpass Talks] Dominando Testes Unitários no iOS (Leonardo Santos)
Cursos
Cursos gratuitos
- Swift4Noobs
- Do Iniciante ao Avançado em Testes Unitários no iOS - Bruno Faganello
- Princípios S.O.L.I.D aplicados no Swift - Bruno Faganello
- Aprendendo Swift do Iniciante ao Avançado - Udemy
- iOS 13 & Swift 5 - Recriando o Tinder 2020
- Ensino de Programação - Apple [en]
- CS193p - Developing Applications for iOS using SwiftUI - Stanford [en]
- 100 Days of Swift [en]
- 100 Days of SwiftUI [en]
Cursos pagos
- Curso Carreira iOS - Comitando
- Layouts com SwiftUI - Alura
- Curso Completo Desenvolvimento iOS 11 Swift 4 - Eric Brito
- Desenvolvimento de Aplicativos iOS12 em Swift4 - Rodrigo Guimarães
- Swift - TDD, Clean Architecture, Design Patterns, SOLID, MVP - Rodrigo Manguinho
- Desenvolvimento IOS 12 - Aprenda a criar 18 Apps - Jamilton Damasceno
- Desenvolvedor iOS: Prepare-se para o Mercado de Trabalho - Wellignton Bezerra
- Desenvolvimento de aplicativos iOS - Do básico às vendas! - Davi Orzechowski
- The Complete iOS Development Bootcamp - Angela Yu [en]
Ferramentas e Recursos
Utilidades
- Formatação de data - NSDateFormatter
- Swift Lint - Vinicius Mangueira
- Linting - SwiftLint
- SwifFormat
- SwiftGen
- Tuist
- XcodeGen
- xcpretty
Deploy e CI/CD
- Gerando artefatos .ipa com GitHub Actions - Michel Lutz
- Migrando um projeto iOS para o Bazel - Mateus de Sousa
- Automatizando builds e submissões com Fastlane - Mateus de Sousa
- Bitrise
- Jenkins
- Fastlane
- Judo - UI orientada a servidor
Blogs e Plataformas
- ReisDev
- DevPoli
- Primitive School - beta [en]
- Recreate [en]
- AppCoda [en]
- Hacking With Swift [en]
- Kodeco (antigo Raywenderlich) [en]
- LearnAppMaking [en]
- Daily Dose of Swift [en]
- iOS Dev Weekly [en]
- Create with Swift [en]
- Awesome iOS [en]
- The Swift Dev [en]
- Holy Swift [en]
- Swift with Majid [en]
- Swift Senpai [en]
- SerialCoder.dev [en]
- Swift by Sundell [en]
- WWDC Notes [en]
- SwiftLee [en]
- Yet Another Swift Blog [en]
Livros
- Swift Book em Português(em tradução)
- Desenvolvendo para iPhone e iPad - Ricardo R. Lecheta
- Swift in Depth - Tjeerd in 't Veen [en]
- Mastering Swift 5 - Jon Hoffman [en]
- Livros Kodeco, vários níveis e tópicos [en]
- Learn Swift - Aidan Finn [en]
YouTube
Canais
- Attekita Dev
- Back Front Academy
- Cícero Camargo CODEMUS
- CocoaHeadsBR
- Codando Com Moa
- Comitando
- Developer Academy PUC-Rio
- Michel Lopes
- Pedro Lagosta
- ReisDev
- Raphael Oliveira
- Tiago Aguiar
- Thais Sadami
- Swift para todos
- Credo Academy [en]
- Essential Developer [en]
- iOS Academy [en]
- Paul Hudson [en]
- Rebeloper [en]
- Sean Allen [en]
- Vincent Pradeilles [en]
- Kavsoft [en]
- Stewart Lynch [en]
- Karin Prater [en]
Playlists
- Curso de Swift - Hugo Vasconcelos
- Aulas de Swift - Bruno Scheltzke
- Desenvolvimento iOS - Desgourmetizando o conhecimento / Renato Matos
- DESENVOLVIMENTO iOS - Tiago Aguiar
- Curso de Swift - Programação - Tiago Aguiar
- Tutoriais iOS (UIKit) - Tiago Aguiar
- iOS Development with Swift Tutorials
- Curso grátis Swift e SwiftUI (stanford 2020) [en]
- Apple Swift Programming Language Tutorial Series [en]
- iOS Course Lectures Spring 2021 - Cornell AppDev [en]
Podcasts
- Build Failed Podcast
- Podcasts GigaHertz
- Pod Install
- Compile Swift [en]
- Contravariance. A Swift Podcast [en]
- Swift by Sundell [en]
- Swift Unwrapped [en]
Playgrounds
Roadmaps
- A Jornada do Programador iOS - BackFront Academy
- Plano de Estudos de Desenvolvimento iOS - Zup Innovation
- iOS Roadmap - Escalando com Swift
- Swift Developer Roadmap - Ronan Rodrigo Nunes [en]
- Mobile Developer Roadmap - Jung Kim [en]
- iOS Developer Skills Matrix - Bohdan Orlov [en]
- iOS Roadmap - roadmap.sh
Vídeos
Redes Sociais
- Bruno Faganello
- CocoaHeads Brasil
- Codando com Moa
- Daily Dose of Swift
- DudaDev
- Erik
- Lelê Developer
- Luiz Mello
- Mafê
- Raphael Oliveira
- ReisDev
- Rychillie
- Thais Sadami