Actores Globales en Swift para iOS

Resumen de los actores en Swift: qué son, cómo funcionan y tipos como instancia, global y reentrantes, con buenas prácticas y ejemplos para iOS y concurrencia segura.

24 ago 2025 • 5 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Qué son los actors en Swift

Los actors son una característica de concurrencia introducida en Swift 5.5 que ofrecen una forma segura de gestionar estado mutable en programas concurrentes. Un actor es un tipo por referencia que protege su estado mutable garantizando que solo una tarea pueda acceder a sus propiedades y métodos a la vez.

Piense en un actor como una envoltura protectora alrededor de los datos que maneja la sincronización automáticamente. Cuando varias tareas intentan acceder a un actor simultáneamente, Swift las pone en cola, evitando condiciones de carrera, corrupción de datos y fallos típicos de la programación multihilo.

Ejemplo simple de actor

actor BankAccount { private var balance: Double = 0.0 func deposit _ amount: Double { balance += amount } func getBalance() -> Double { return balance } }

El problema que resuelven los actors

En la programación concurrente tradicional, cuando varios hilos acceden a datos compartidos y mutables al mismo tiempo se corre el riesgo de corrupción de datos, accesos a memoria liberada y comportamientos impredecibles. Los actors eliminan estos problemas creando una frontera de aislamiento alrededor de su estado.

Cómo funcionan los actors

Un actor procesa una petición a la vez de forma serializada. Cuando se llama a un método de un actor desde fuera de su contexto de aislamiento, se debe usar await, lo que crea un punto de suspensión donde el código espera su turno para ejecutarse.

Ejemplo de uso

actor DownloadManager { private var activeDownloads: [URL: Progress] = [:] private var completedFiles: [URL: Data] = [:] func startDownload from url: URL -> String { if activeDownloads[url] != nil { return Download already in progress } let progress = Progress() activeDownloads[url] = progress return Download started } func completeDownload url: URL, data: Data { activeDownloads.removeValue forKey: url completedFiles[url] = data } func getCompletedData for url: URL -> Data? { return completedFiles[url] } } func handleDownload() async { let manager = DownloadManager() let status = await manager.startDownload from: URL(string: https://example.com/file)! print status }

Qué son los global actors

Los global actors extienden el concepto de actor para proporcionar dominios de sincronización a nivel de aplicación. A diferencia de los actors de instancia que protegen instancias individuales, los global actors sincronizan código entre múltiples tipos, garantizando que todo el código marcado se ejecute en el mismo ejecutor serial.

Protocolo para crear un global actor

@globalActor actor NetworkActor { static let shared = NetworkActor() private init() {} }

Por qué usar global actors

Los global actors son útiles cuando se necesita sincronización entre tipos, aislamiento de dominios como redes o base de datos, o afinidad de hilo para asegurar que cierto código siempre se ejecute en el mismo ejecutor.

Tipos de actors en Swift

1. Actors de instancia: cada instancia mantiene su propio dominio de aislamiento, ideal para recursos individuales.

actor SessionManager { private var sessions: [String: UserSession] = [:] private var maxSessions = 5 func createSession for userId: String throws -> UserSession { guard sessions.count < maxSessions else { throw SessionError.limitReached } let session = UserSession(userId: userId) sessions[userId] = session return session } func invalidateSession for userId: String { sessions.removeValue forKey: userId } func getActiveSessionCount() -> Int { return sessions.count } }

2. Global actors personalizados: crea actores globales por dominio para subsistemas como analítica o red.

@globalActor actor AnalyticsActor { static let shared = AnalyticsActor() private init() {} } @AnalyticsActor class AnalyticsTracker { private var eventCount = 0 func trackEvent _ name: String { eventCount += 1 print Event #\\(eventCount): \\(name) } } @AnalyticsActor func logUserAction _ action: String { print User action: \\(action) } class ViewController: UIViewController { func userTappedButton() async { await logUserAction button_tap } }

3. Actors reentrantes: un actor puede llamar a sus propios métodos sin riesgo de interbloqueo.

actor Calculator { private var memory: Double = 0 func factorial _ n: Int -> Int { if n <= 1 { return 1 } return n * factorial n - 1 } func storeInMemory _ value: Double { memory = value } func recallMemory() -> Double { return memory } }

4. Contexto nonisolated: partes de un actor que no necesitan sincronización pueden marcarse nonisolated para mejorar rendimiento.

actor ConfigurationManager { let appVersion = 1.0.0 private var settings: [String: Any] = [:] nonisolated func getAppVersion() -> String { return appVersion } nonisolated func calculateCacheKey for endpoint: String -> String { return appVersion _ endpoint.replacingOccurrences of: /, with: _ } func updateSetting key: String, value: Any { settings[key] = value } }

Buenas prácticas

Elegir el tipo de actor adecuado: use actors de instancia para recursos individuales, global actors para dominios de sincronización a nivel de sistema y @MainActor para actualizaciones de UI. Mantenga las fronteras de actor pequeñas y enfocadas para reducir la contención. Use nonisolated con prudencia para propiedades calculadas e información inmutable. Diseñe cuidadosamente las interacciones entre varios actors para evitar deadlocks y asegurar un flujo de datos correcto.

Resumen y cómo puede ayudar Q2BSTUDIO

Entender los actores y sus variantes permite construir aplicaciones iOS robustas y seguras frente a la concurrencia. En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial, ciberseguridad y servicios cloud aws y azure. Ofrecemos soluciones de software a medida, aplicaciones a medida y servicios de inteligencia de negocio que integran inteligencia artificial e ia para empresas. Nuestro equipo crea agentes IA, implementa Power BI y servicios inteligencia de negocio para mejorar la toma de decisiones, y garantiza seguridad y cumplimiento con servicios de ciberseguridad. Si buscas software a medida o estrategias de transformación digital con inteligencia artificial, Q2BSTUDIO puede ayudarte a diseñar arquitecturas escalables basadas en actores, global actors y prácticas de concurrencia modernas para apps iOS y sistemas backend.

Palabras clave

aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.