У классов Swift есть что-то вроде указателя isa, который можно переназначить?
Мы видели, что Swift использует более статический метод отправки, чем objective-C, который (если только класс dervices из Foundation/NSObject) не предотвращает стиль swizzling основанный на реализации методов переопределения во время выполнения.
Мне интересно, как мы будем использовать динамические функции на основе перехвата меток, такие как шаблон наблюдателя, уведомления и т.д.? В настоящее время все эти материалы предоставляются слоем Objective-C и могут быть легко интегрированы в Swift. Но, если мы хотим предоставить эти функции в рамках (или приложениях) наших собственных, необходимо ли их реализовать в Objective-C? Я бы предположил, что есть способ сделать это "изначально".
Другой вид swizzling, общий для Objective-C, переназначает isa-указатель для генерации подкласса "на лету". Этот вид swizzling поддерживается в Swift? Если не существует поддерживаемый способ перехвата произвольных вызовов метода?
Изменить: Как указывает @jatoben, с arm64 isa-переназначение должно выполняться вызовом object_setClass(), а не путем прямого доступа к значению. Это по-прежнему называется "isa pointer swizzling"