Swift - переопределение указателя или другой поддерживаемый метод swizzling

У классов Swift есть что-то вроде указателя isa, который может быть переназначен?

Мы видели, что Свифтиспользует более статический метод отправки чем Objective-C, который (если только не классы устройств из Foundation / NSObject) предотвращает стиль переворота на основе реализаций переотображения метода во время выполнения.

Мне интересно, как мы будем реализовывать динамические функции, основанные на перехвате методов, такие как шаблон наблюдателя, уведомления и т. Д.? В настоящее время весь этот материал предоставляется слоем Objective-C и может быть легко интегрирован в Swift. Но если мы хотим предоставить такие функции в собственной структуре (или приложении), нужно ли их реализовывать в Objective-C? Я бы предположил, что есть способ сделать это «изначально».

Другой тип общего типа для target-C - это переопределение isa-указателя для генерации подкласса на лету. Поддерживается ли этот вид изгиба в Swift? Если не то, чтоявляется поддерживаемый способ перехвата произвольных вызовов методов?

Редактировать: Как указывает @jatoben, для arm64 isa-remapping должно выполняться путем вызова object_setClass (), а не путем прямого доступа к значению. Это до сих пор называют «указатель isa Swizzling»