Le classi Swift hanno qualcosa come un puntatore isa che può essere rimappato?Swift isa puntatore remapping o altro metodo supportato swizzling
Abbiamo visto che Swift uses a more static method dispatch rispetto all'obiettivo-C, che (a meno che i dervizi di classe di Foundation/NSObject) impediscano lo stile di swizzling basato sulle implementazioni del metodo di remapping in fase di esecuzione.
Mi chiedo come implementeremo le funzioni dinamiche basate sull'interpretazione dei metodi come il pattern dell'osservatore, le notifiche, ecc.? Attualmente tutto questo materiale è fornito dal layer Objective-C e può essere facilmente integrato in Swift. Ma, se vogliamo fornire questo tipo di funzionalità in un framework (o app) del nostro, è necessario implementarle in Objective-C? Immagino che ci sia un modo per farlo 'nativamente'.
Un altro tipo di swizzling comune all'obiettivo-C sta rimappando il puntatore isa per generare al volo una sottoclasse. Questo tipo di swizzling è supportato in Swift? In caso contrario, è il modo supportato di intercettare invocazioni di metodi arbitrari?
Edit:Come @jatoben punti fuori, come di arm64 isa-rimappatura deve essere fatto chiamando object_setClass() e non accedendo direttamente il valore. Questo è ancora chiamato "isa pointer swizzling"
Non è sicuro accedere a isa direttamente in Obj-C, o: http://sealiesoftware.com/blog/archive/2013/09/24/objc_explain_Non-pointer_isa.html – jatoben