#pragma mark en Swift 2025: Secretos de organización del código que no se cuentan

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: Por qué tu código grita pidiendo ayuda (y cómo MARK: lo calma)

\n\n

Imagina: abres un archivo Swift de 500 líneas. Tus ojos recorren la pantalla, buscas el método tableView(_:cellForRowAt:), pero te hundes en un mar de func y var. ¿Te suena? En 2025, cuando los proyectos son cada vez más complejos y la velocidad de desarrollo es crítica, esta situación es un camino directo a los errores y la pérdida de tiempo.

\n\n

En Stack Overflow, la pregunta "#pragma mark in Swift?" ha acumulado miles de visitas. Y no es casualidad. Los desarrolladores que migraron de Objective-C buscaban una herramienta familiar, y los novatos, una forma de poner orden en el código. La respuesta es simple y elegante: en Swift no existe #pragma mark, pero hay un análogo más potente: // MARK:.

\n\n

En este artículo no solo te contaremos cómo usar // MARK: en Swift. Te mostraremos las mejores prácticas de 2025 que convertirán tu código en una obra de arte, comprensible tanto para ti dentro de un año como para tus colegas. Prepara Xcode: será interesante.

\n\n

¿Qué es // MARK: en Swift y para qué sirve?

\n\n

Si alguna vez trabajaste con Objective-C, recordarás #pragma mark. Es una directiva de preprocesador que ayudaba a agrupar métodos en el panel de navegación de Xcode. En Swift se eliminó, pero se mantuvo la funcionalidad a través de comentarios especiales.

\n\n

// MARK: es un comentario que Xcode interpreta como un separador de secciones. Añade en el panel de navegación (Jump Bar) un título en negrita y una línea divisoria. Se ve así:

\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\n

Observa el guion después de MARK: (// MARK: -). Añade una línea horizontal separadora. Sin el guion, solo será texto en negrita. Usa ambas variantes según lo mucho que quieras separar visualmente los bloques.

\n\n

Palabras clave para SEO: uso de // MARK: en Swift, organización del código Swift, navegación en Xcode.

\n\n

Mejores prácticas de uso de // MARK: en 2025

\n\n

Simplemente insertar // MARK: en todas partes es una mala idea. Esto crea ruido. Aquí tienes técnicas probadas que utilizan los mejores desarrolladores iOS.

\n\n

1. Agrupa por protocolos y responsabilidades

\n\n

El escenario más común es la implementación de varios protocolos en una misma clase. No obligues a tus colegas a adivinar dónde termina UITableViewDelegate y comienza UITableViewDataSource.

\n\n
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\n

Este es el estándar de oro. Cada bloque se encarga de una unidad lógica.

\n\n

2. Usa // MARK: - para secciones lógicas dentro de la clase

\n\n

Incluso si no implementas protocolos, divide las clases largas en secciones: Public Methods, Private Methods, Helpers, Acti

Blogs

Book Recommendations