Sobes.tech
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.