2015-09-17 20 views
5

ho avuto una classe Swift dichiarata in questo modo:errore @objc quando migrato a Swift 2

@objc class MyHelper { 
// class code 
} 

ho dovuto fare questo per accedere tale classe da Objective-C classi, dal momento che sto mescolando lingue nel mio progetto. Ora che ho aggiornato a Xcode 7, ottengo questo errore:

Only classes that inherit from NSObject can be declared @objc

E tale classe non è noto dai miei Objective-C classi più. Suppongo che quindi dovrei ereditare la mia classe Swift da NSObject, che avrà qualche impatto sul modo in cui l'app stava funzionando?

Grazie

risposta

3

vedere il personale SevenTenEleven del reply Apple nel Developer Forum di Apple.

Ha menzionato che questo è dovuto a @objc in cui le classi con radice di Swift non si sono mai comportate come una classe con radice NSObject, causando varie stranezze nell'intestazione generata e in fase di esecuzione.

Possiamo ancora trattare qualsiasi istanza della classe Swift come AnyObject, contrassegnare metodi e proprietà su una classe Swift come @objc e conformarsi ai protocolli Objective-C; la classe semplicemente non è esposta nell'intestazione generata e non ha l'impostazione predefinita di avere i suoi membri disponibili in Objective-C.