Sobes.tech
Junior — Middle

Milyen típusú diszpécser nem módosítható a Swizzling módszerrel?

sobes.tech MI

Válasz az MI-től

Az iOS-ban a Swizzling módszer lehetővé teszi a metódusok implementációinak futás közbeni módosítását, de csak az Objective-C dinamikus dispatch-jével működik. Azok a dispatch típusok, amelyeket nem lehet módosítani Swizzling segítségével:

  • Statikus dispatch (például, C vagy C++ függvényhívások virtuális metódusok nélkül).
  • Swift-ben statikusan feloldott metódusokat használó dispatch (például, végleges vagy struktúrák metódusai).
  • Olyan metódushívások, amelyek nem az Objective-C runtime-on keresztül vannak implementálva (például, nem @objc jelölt metódusok).

Ezért a Swizzling csak az Objective-C runtime-on keresztül futó metódusokra alkalmazható, és nem működik tiszta Swift metódusokkal, amelyek nem @objc jelöltek.