Preguntas
¿Qué es una "conformance aislada a un actor global" y por qué se necesita?
Un tipo de dato conforma un protocolo dentro de un cierto dominio de aislamiento - Si se llama un método de este protocolo en otro dominio de aislamiento, entonces aparecerá un error como el siguiente:
// ❌ Global actor 'X'-isolated operator function '==' cannot be called from outside of the actor
Dentro de la definición del método se podría usar assumeIsolated(_:file:line:), sin embargo, con esto el compilador ya no estaría haciendo validaciones para asegurar que el código ejecutado dentro del método esté dentro de un actor específico, sino que estaría delegando la responsabilidad al desarrollador.
Por esto es mejor conformar el protocolo de forma aislada dentro de un actor.
¿Cuáles son los riesgos de usar nonisolated al implementar Equatable en un tipo marcado con @MainActor?
Dentro del método nonisolated no se podría acceder directamente a la información aislada en MainActor. Sería necesario implementar cualquier estrategia para cambiar de dominio de aislamiento (e.g. assumeIsolated, MainActor.run o Task con await).
¿Por qué MainActor.assumeIsolated es considerada una solución peligrosa o incompleta?
Se delega la responsabilidad al desarrollador: Si el código definido en el bloque no está en el actor principal, la aplicación se explota.
¿Qué diferencia hay entre la seguridad en tiempo de compilación y la responsabilidad manual del desarrollador en este contexto?
El compilador puede impedir la compilación de la aplicación, evitando que el producto llegue a manos del cliente.
Si se delega la responsabilidad manual al desarrollador, puede ser que se pase por alto algún error.
¿Cómo se habilita InferIsolatedConformances en un paquete Swift?
Cuando se defina el paquete se agrega: .enableUpcomingFeature("InferIsolatedConformances").
Top comments (0)