Introdução: Por que seu código está pedindo socorro (e como MARK: o acalma)
\n\nImagine: você abre um arquivo Swift com 500 linhas. Seus olhos percorrem a tela, você procura o método tableView(_:cellForRowAt:), mas se afoga em um mar de func e var. Familiar? Em 2025, quando os projetos se tornam cada vez mais complexos e a velocidade de desenvolvimento é crítica, essa situação é um caminho direto para bugs e perda de tempo.
No Stack Overflow, a pergunta "#pragma mark in Swift?" acumulou milhares de visualizações. E não é à toa. Desenvolvedores que migraram do Objective-C buscavam uma ferramenta familiar, e os iniciantes, uma forma de organizar o código. A resposta é simples e elegante: em Swift não existe #pragma mark, mas existe seu análogo mais poderoso — // MARK:.
Neste artigo, não vamos apenas mostrar como usar // MARK: em Swift. Vamos apresentar as melhores práticas de 2025 que transformarão seu código em uma obra de arte, compreensível tanto para você daqui a um ano quanto para seus colegas. Prepare o Xcode — vai ser interessante.
\n\nO que é // MARK: em Swift e para que serve?
\n\nSe você já trabalhou com Objective-C, lembra-se do #pragma mark. Era uma diretiva de pré-processador que ajudava a agrupar métodos no painel de navegação do Xcode. Em Swift, ela foi removida, mas a funcionalidade foi mantida através de comentários especiais.
// MARK: é um comentário que o Xcode interpreta como um separador de seções. Ele adiciona um título em negrito e uma linha divisória no painel de navegação (Jump Bar). Fica assim:
\n\n// MARK: - Lifecycle\n\noverride func viewDidLoad() {\n super.viewDidLoad()\n}\n\n// MARK: - Table View Data Source\n\nfunc tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {\n return items.count\n}\n\n\nObserve o hífen após MARK: (// MARK: -). Ele adiciona uma linha horizontal separadora. Sem o hífen, será apenas texto em negrito. Use ambas as variações dependendo de quanto deseja separar visualmente os blocos.
Palavras-chave para SEO: uso de // MARK: em Swift, organização de código Swift, navegação Xcode.
\n\nMelhores práticas de uso do // MARK: em 2025
\n\nApenas inserir // MARK: em todo lugar é uma má ideia. Isso cria ruído. Aqui estão técnicas comprovadas usadas pelos melhores desenvolvedores iOS.
1. Agrupe por protocolos e responsabilidades
\n\nO cenário mais comum é a implementação de vários protocolos em uma mesma classe. Não force seus colegas a adivinhar onde termina o UITableViewDelegate e começa o UITableViewDataSource.
final class ProfileViewController: UIViewController {\n\n // MARK: - Properties\n\n private let viewModel: ProfileViewModel\n private let tableView = UITableView()\n\n // MARK: - Lifecycle\n\n override func viewDidLoad() {\n super.viewDidLoad()\n setupUI()\n }\n\n // MARK: - UITableViewDataSource\n\n override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {\n return viewModel.sections.count\n }\n\n override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n // ...\n }\n\n // MARK: - UITableViewDelegate\n\n func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {\n viewModel.didSelectRow(at: indexPath)\n }\n\n // MARK: - Private Methods\n\n private func setupUI() {\n // ...\n }\n}\n\n\nEste é o padrão ouro. Cada bloco é responsável por uma unidade lógica.
\n\n2. Use // MARK: - para seções lógicas dentro da classe
\n\nMesmo que você não implemente protocolos, divida classes longas em seções: Public Methods, Private Methods, Helpers, Acti