▁and ▁remote ▁inv ocation ▁can ▁be ▁easily ▁implemented ▁using ▁categories ▁and ▁message ▁forward ing . ▁ ▁Sw izz ling ▁of ▁the ▁is a ▁pointer ▁allows ▁for ▁classes ▁to ▁change ▁at ▁runtime . ▁Typ ically ▁used ▁for ▁debugging ▁where ▁fre ed ▁objects ▁are ▁sw izz led ▁into ▁z omb ie ▁objects ▁whose ▁only ▁purpose ▁is ▁to ▁report ▁an ▁error ▁when ▁someone ▁calls ▁them . ▁Sw izz ling ▁was ▁also ▁used ▁in ▁Enter prise ▁Object s ▁Framework ▁to ▁create ▁database ▁fault s . ▁Sw izz ling ▁is ▁used ▁today ▁by ▁Apple ' s ▁Foundation ▁Framework ▁to ▁implement ▁Key - Value ▁Ob ser ving . ▁ ▁Language ▁variants ▁ ▁Object ive - C ++ ▁Object ive - C ++ ▁is ▁a ▁language ▁variant ▁accepted ▁by ▁the ▁front - end ▁to ▁the ▁GNU ▁Comp iler ▁Collection ▁and ▁Cl ang , ▁which ▁can ▁compile ▁source ▁files ▁that ▁use ▁a ▁combination ▁of ▁C ++ ▁and ▁Object ive - C ▁syntax . ▁Object ive - C ++ ▁adds ▁to ▁C ++ ▁the ▁extensions ▁that ▁Object ive - C ▁adds ▁to ▁C . ▁As ▁nothing ▁is ▁done ▁to ▁un ify ▁the ▁semantics ▁behind ▁the ▁various ▁language ▁features , ▁certain ▁restrictions ▁apply : ▁ ▁A ▁C ++ ▁class ▁cannot ▁derive ▁from ▁an ▁Object ive - C ▁class ▁and ▁vice ▁vers a . ▁ ▁C ++ ▁names paces ▁cannot ▁be ▁declared ▁inside ▁an ▁Object ive - C ▁declaration . ▁ ▁Object ive - C ▁declarations ▁may ▁appear ▁only ▁in ▁global ▁scope , ▁not ▁inside ▁a ▁C ++ ▁namespace ▁ ▁Object ive - C