que puede para hombre hacer enloquecer enamorar complacer como cama amor swift initialization initializer

swift - puede - como enloquecer de amor a un hombre



¿Cómo satisfacer un protocolo que incluye un inicializador? (1)

Definí una clase simple:

class MyClass { var name:String? required init() { println("init") } }

Puedo agregar un nuevo inicializador en una extensión como esta:

extension MyClass { convenience init(name: String) { self.init() self.name = name } }

Todo funciona bien.

Pero tan pronto como defino el nuevo inicializador en un protocolo:

protocol MyProtocol { init(name:String) }

Y hacer que mi extensión confirme a ese protocolo:

extension MyClass : MyProtocol { convenience init(name: String) { self.init() self.name = name } }

Obtuve el siguiente error:

El requisito de inicializador ''init (nombre :)'' solo se puede cumplir con un inicializador required en la definición de la clase no final ''MyClass''

¿Que esta pasando aqui?

(Por cierto: no puedo llegar a la final mi clase, porque esto es solo el extracto de un caso de uso más complicado).


Ok mio

Para garantizar que todas las subclases se ajustan a MyProtocol nuevo inicializador también debe marcarse como sea required .

Además, Swift requiere declarar todos los inicializadores requeridos directamente dentro de la clase y no permite declararlos en extensiones.

extension MyClass : MyProtocol { required convenience init(name: String) { self.init() self.name = name } }