: ▁ ▁self ▁= ▁[ super ▁init ] ▁ ▁S ends ▁the ▁super class ▁instance ▁an ▁init ▁message ▁and ▁assign s ▁the ▁result ▁to ▁self ▁( pointer ▁to ▁the ▁current ▁object ). ▁ ▁if ▁( self ) ▁ ▁Check s ▁if ▁the ▁returned ▁object ▁pointer ▁is ▁valid ▁before ▁performing ▁any ▁initialization . ▁ ▁return ▁self ▁ ▁Returns ▁the ▁value ▁of ▁self ▁to ▁the ▁caller . ▁ ▁A ▁non - valid ▁object ▁pointer ▁has ▁the ▁value ▁nil ; ▁conditional ▁statements ▁like ▁" if " ▁treat ▁nil ▁like ▁a ▁null ▁pointer , ▁so ▁the ▁initialization ▁code ▁will ▁not ▁be ▁executed ▁if ▁[ super ▁init ] ▁returned ▁nil . ▁If ▁there ▁is ▁an ▁error ▁in ▁initialization ▁the ▁init ▁method ▁should ▁perform ▁any ▁necessary ▁clean up , ▁including ▁sending ▁a ▁" release " ▁message ▁to ▁self , ▁and ▁return ▁nil ▁to ▁indicate ▁that ▁initialization ▁failed . ▁Any ▁checking ▁for ▁such ▁errors ▁must ▁only ▁be ▁performed ▁after ▁having ▁called ▁the ▁super class ▁initialization ▁to ▁ensure ▁that ▁destroy ing ▁the ▁object ▁will ▁be ▁done ▁correctly . ▁ ▁If ▁a ▁class ▁has ▁more ▁than ▁one ▁initialization ▁method , ▁only ▁one ▁of ▁them ▁( the ▁" design ated ▁initial izer ") ▁needs ▁to ▁follow ▁this ▁pattern ; ▁others ▁should ▁call ▁the ▁designated ▁initial izer ▁instead ▁of ▁the ▁super class ▁initial izer . ▁ ▁Pro tocol s ▁In ▁other ▁programming ▁languages , ▁these ▁are ▁called ▁" inter faces ". ▁ ▁Object ive - C ▁was ▁extended ▁at ▁Ne XT ▁to ▁introduce ▁the ▁concept ▁of ▁multiple ▁inheritance ▁of ▁specification , ▁but ▁not ▁implementation