que instanciar inicializadores funciĆ³n estructura entrada datos computadas clase swift xcode8-beta6

instanciar - "No se puede heredar de una clase no abierta" swift



que es self en swift (2)

A partir de Xcode 8 beta 6 ahora obtengo el error de compilación "No se puede heredar de la clase no abierta (Clase)" fuera de su módulo de definición "

La clase de la que estaba heredando era parte de un marco Swift aparte, pero mi proyecto se compiló para Xcode 8 beta 5. ¿Qué necesito cambiar para que mi proyecto se compile nuevamente?


Encontré la respuesta yo mismo.

En Swift 3 ahora puede marcar una clase como open lugar de public Esto permite que los archivos fuera del módulo subclase de esa clase.

Simplemente reemplace el public en su clase de módulo con open .

Referencia here .


La clase de la que hereda debe definirse como open lugar de public .

Un poco más de contexto sobre los cambios para controlar el acceso en Swift 3:

Swift 2 solo tenía 3 niveles de acceso:

  • private : las entidades están disponibles solo desde dentro del archivo fuente donde están definidas.
  • internal : las entidades están disponibles para todo el módulo que incluye la definición.
  • public : las entidades están diseñadas para su uso como API y se puede acceder a ellas desde cualquier archivo que importe el módulo.

Swift 3 está agregando 2 niveles de acceso más ( open y fileprivate ) y cambiando el significado de private :

  • private : símbolo visible solo dentro de la declaración actual.
  • fileprivate : símbolo visible dentro del archivo actual.
  • internal : símbolo visible dentro del módulo actual.
  • public : símbolo visible fuera del módulo actual.
  • open : para la clase o función que debe ser subclasificada o anulada fuera del módulo actual.