▁the ▁" NS " ▁der ives ▁from ▁the ▁names ▁of ▁the ▁classes ▁as ▁defined ▁during ▁the ▁development ▁of ▁Ne XT ST EP . ▁ ▁Since ▁Object ive - C ▁is ▁a ▁strict ▁su pers et ▁of ▁C , ▁it ▁does ▁not ▁treat ▁C ▁primitive ▁types ▁as ▁first - class ▁objects . ▁ ▁Un like ▁C ++, ▁Object ive - C ▁does ▁not ▁support ▁operator ▁over loading . ▁Also ▁unlike ▁C ++, ▁Object ive - C ▁allows ▁an ▁object ▁to ▁directly ▁inherit ▁only ▁from ▁one ▁class ▁( for b idd ing ▁multiple ▁inheritance ). ▁However , ▁in ▁most ▁cases , ▁categories ▁and ▁protocol s ▁may ▁be ▁used ▁as ▁alternative ▁ways ▁to ▁achieve ▁the ▁same ▁results . ▁ ▁Because ▁Object ive - C ▁uses ▁dynamic ▁runtime ▁typing ▁and ▁because ▁all ▁method ▁calls ▁are ▁function ▁calls ▁( or , ▁in ▁some ▁cases , ▁sys c alls ), ▁many ▁common ▁performance ▁optim izations ▁cannot ▁be ▁applied ▁to ▁Object ive - C ▁methods ▁( for ▁example : ▁in lin ing , ▁constant ▁propag ation , ▁inter pro ced ural ▁optim izations , ▁and ▁scalar ▁replacement ▁of ▁aggreg ates ). ▁This ▁limits ▁the ▁performance ▁of ▁Object ive - C ▁abstra ctions ▁relative ▁to ▁similar ▁abstra ctions ▁in ▁languages ▁such ▁as ▁C ++ ▁where ▁such ▁optim izations ▁are ▁possible . ▁ ▁Memory ▁management ▁The ▁first ▁versions ▁of ▁Object ive - C ▁did ▁not ▁support ▁garbage ▁collection . ▁At ▁the ▁time ▁this ▁decision ▁was ▁a ▁matter ▁of ▁some ▁debate , ▁and ▁many ▁people ▁considered ▁long ▁" de ad ▁times " ▁(