El objective C & Swift Interoperability provoca un error "Las extensiones pueden no contener properties almacenadas"

Estaba trabajando en una de mis aplicaciones anteriores que se realizó en el Objetivo C. Necesito agregarle un nuevo module y decidí utilizar Swift para ese module en particular.

Tengo una class llamada HomePage en Objective C, quería agregar algunas nuevas IBAction e IBOutlet s. Para eso agregué un nuevo file rápido y extendí la class existente como:

 // MARK: IBOutlets and IBActions extension HomePage { @IBOutlet var image : UIImageView! ... /*! * Loads the application support webpage */ @IBAction func loadSupportURL(sender : UIButton) { } ... } 

Si agrego solo las IBActions, todo funciona perfectamente. Pero cuando agrego un IBOutlet, el comstackdor arroja un error como:

Las extensiones pueden no contener properties almacenadas.

Para solucionarlo tengo dos forms,

  1. Declara la salida en mi class Objective C en sí
  2. Convierta la class Objective C a Swift y declare la propiedad allí

¿Hay alguna otra forma de solucionar este problema?

Como el post de error indica claramente, no puede tener properties almacenadas en una extensión. Pero la cosa es que tampoco puedes tenerlos en las categorías de Objective-C, así que el idioma no es el problema aquí.

En ambos idiomas, debe usar references asociadas para implementar las properties almacenadas. Consulte este hilo para ver un ejemplo de uso de references asociadas en Swift. Como es una API C, su uso es prácticamente el mismo en Objective-C.