Swift é um remapeamento de ponteiro ou outro método suportado

As classes Swift têm algo como um ponteiro isa que pode ser remapeado?

Vimos que Swiftusa um envio de método mais estático do que o objetivo C, que (a menos que uma classe desvie do Foundation / NSObject) evita o estilo de swizzling com base nas remapeações de implementações de métodos em tempo de execução.

Gostaria de saber como vamos implementar recursos dinâmicos baseados em interceptação de métodos, como o padrão do observador, notificações, etc.? Atualmente, todo esse material é fornecido pela camada Objective-C e pode ser facilmente integrado ao Swift. Mas, se queremos fornecer esses tipos de recursos em uma estrutura (ou aplicativo) própria, é necessário implementá-los no Objective-C? Eu diria que existe uma maneira de fazê-lo 'nativamente'.

Outro tipo de swizzling comum ao objetivo-C é o remapeamento do ponteiro isa para gerar uma subclasse em tempo real. Esse tipo de swizzling é suportado no Swift? Se não o queé a maneira suportada de interceptar invocações arbitrárias de métodos?

Editar: Como o @jatoben aponta, a partir do arm64 o isa-remapping deve ser feito chamando object_setClass () e não acessando o valor diretamente. Isso ainda é chamado de "isa swizzling"

questionAnswers(1)

yourAnswerToTheQuestion