Sobes.tech
Junior — Middle

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.