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.