Junior — Middle
Millised dispetcherimise tüübid ei saa Swizzling meetodi kaudu muuta?
sobes.tech AI
Vastus AI-lt
iOS-s kasutatav Swizzling meetod võimaldab muuta meetodite teostust jooksvalt, kuid töötab ainult Objective-C dünaamilise jaotuse (dispatch) süsteemiga. Jaotuse tüübid, mida Swizzling ei saa muuta:
- Statiline jaotus (näiteks C või C++ funktsioonide kutsed ilma virtuaalsete meetoditeta).
- Swiftis kasutatav statiliselt lahendatud meetodite jaotus (näiteks final meetodid või struktuuride meetodid).
- Meetodite kutsed, mis ei ole realiseeritud Objective-C runtime'i kaudu (näiteks meetodid, millele ei ole märgitud @objc).
Seetõttu kehtib Swizzling ainult meetoditele, mis läbivad Objective-C runtime'i ning ei tööta puhtalt Swift meetoditega ilma @objc märgistuseta.