Ako sa zmení mechanizmus dispatchovania pri dedičstve objektu od triedy NSObject?
sobes.tech AI
Odpoveď od AI
Keď dedíte od NSObject v Objective-C alebo Swift, objekt získa prístup k mechanizmu dynamického odosielania správ, založenému na runtime Objective-C. To znamená, že volania metód sú spracovávané prostredníctvom odosielania správ (message sending), nie statickým viazaním.
Konkrétne, pri volaní metódy sa implementácia hľadá v tabuľke metód triedy počas behu, čo umožňuje využívať funkcie ako dynamické pridávanie metód, prepísanie, forwarding správ a dynamické riešenie metód.
Ak objekt nededí od NSObject, napríklad v čistom Swift bez NSObject, používa sa statické dispatch alebo mechanizmus vtable, čo je menej flexibilné, ale rýchlejšie. Preto dedičstvo od NSObject zahrňuje objekt do systému dynamického dispatch systému runtime Objective-C.