Вчера мы говорили про compile и runtime.
Сейчас - поговорим про интероп с objc в Swift, и зачем нужны @objc и dynamic.
@objc
Делает символ «видимым» для Objective-C runtime.
Что даёт:
• присваивает selector
• для свойств getter и setter раскрываются в Objective-C методы:
• регистрирует классы в ObjC runtime:
objc_addClass• позволяет использовать swizzling, KVС/KVO
• ObjC-код вызывает метод через message dispatch
Swift может игнорировать динамику и вызвать @objc-метод статически или через vtable.
@objc не заставляет Swift использовать objc_msgSend.
dynamic - "is what forces Objective-C–style message dispatch even from Swift".
#L #objc #runtime #swift #interop
👏