Jak se změní mechanismus dispatchování při dědění objektu od třídy NSObject?
sobes.tech AI
Odpověď od AI
Děděním z NSObject v Objective-C nebo Swift získává objekt přístup k mechanismu dynamického směrování zpráv, založenému na runtime Objective-C. To znamená, že volání metod je zpracováváno prostřednictvím odesílání zpráv (message sending), nikoliv statickým vázáním.
Konkrétně při volání metody je implementace hledána v tabulce metod třídy během běhu, což umožňuje využívat funkce jako dynamické přidávání metod, přepsání, forwarding zpráv a dynamické řešení metod.
Pokud objekt nedědí od NSObject, například v čistém Swift bez NSObject, používá se statické směrování nebo mechanismus vtable, což je méně flexibilní, ale rychlejší. Tím pádem dědění od NSObject zahrnuje objekt do systému dynamického směrování runtime Objective-C.