2015-08-06 13 views
6

Ho problemi a creare qualcosa in puro Swift. Sto cercando di implementare un registro di classi simile a NSValueTransformer.Esiste un equivalente Swift a GCC `__attribute __ ((costruttore))`?

In Objective-C, farei in modo che le sottoclassi NSValueTransformer fossero registrate chiamando setValueTransformer:forName: nel metodo di classe load della sottoclasse. Questo approccio non funziona in Swift perché il runtime non chiama load sulle classi Swift.

La mia prossima idea era trovare la versione Swift di __attribute__((constructor)) ma la mia ricerca è risultata vuota. Swift fornisce qualcosa di simile a __attribute__((constructor)) o è l'unico modo per ottenere questo risultato per scrivere una funzione C che chiama una funzione Swift?

+0

Hai trovato la soluzione per la tua domanda? Anch'io ho un bisogno simile. Grazie in anticipo –

risposta

0

Se il registro delle classi è incluso in un pacchetto, è possibile utilizzare la classe principale del pacchetto per trovare e registrare i trasformatori. In caso contrario, è possibile utilizzare l'applicazione AppDelegate terminata l'avvio della famiglia di metodi per farlo.

In entrambi i casi, è necessario cercare tra tutte le classi e registrare quelle che si desidera. Objective-C ha il bello objc_getClassList() per fare ciò, per Swift ho trovato un interessante gist che aggiunge questa funzione a Swift: https://gist.github.com/bnickel/410a1bdc02f12fbd9b5e

Problemi correlati