what type protocol extensions extension example delegate associated are and swift swift2 protocol-extension

type - Swift observador de propiedad en la extensión de protocolo?



swift protocol and delegate example (1)

No, esto está explícitamente prohibido. Ver extensión: Propiedades calculadas :

Las extensiones pueden agregar nuevas propiedades calculadas, pero no pueden agregar propiedades almacenadas ni agregar observadores de propiedades a las propiedades existentes.

Tenga en cuenta que si esto fuera legal, agregaría una confusión no trivial sobre el orden de ejecución. Imagine que hay varias extensiones que agregan didSet , y la implementación real también tiene un didSet . ¿En qué orden deberían correr? Esto no significa que sea imposible de implementar, pero podría ser algo sorprendente si lo tuviéramos.

Considera lo siguiente:

protocol ViewControllable: class { typealias VM: ViewModellable var vm: VM! { get } func bind() } extension ViewControllable { var vm: VM! { didSet { bind() } } }

Estoy tratando de observar la propiedad vm y llamar a bind cada vez que se inyecta. Pero esto no se compila con el error que dice:

Las extensiones pueden no contener propiedades almacenadas

lo cual tiene sentido ya que el protocolo no puede imponer las propiedades que se stored o computed .

¿Es esto posible sin introducir class inheritance ?

En otras palabras, ¿Puedo observar el cambio de una propiedad dentro de la extensión del protocolo?