¿Cuándo debería llamar exactamente y cuándo no?

Siempre he pensado que llamar a [super viewWillAppear:animated] es obligatorio. Pero hoy me encontré con un fragment de código de la aplicación de ejemplo de Apple llamada CoreDataBooks y aquí está viewWillAppear: implementación desde allí:

 - (void)viewWillAppear { [self.tableView reloadData]; } 

Tenga en count que no hay llamada a super. Esto me confunde mucho. Si incluso el código de Apple no incluye la llamada a [super viewWillAppear:] entonces, ¿quizás siempre puedo omitirlo? ¿O tal vez hay ciertas reglas sobre este asunto? ¿Alguien puede explicarlo?

Aunque no llamar a la super implementación puede ser inofensivo a veces, SIEMPRE llame a [super viewWillAppear:] , independientemente de los malos ejemplos que publica Apple. No hacerlo puede ocasionar problemas muy desagradables para rastrear.

De acuerdo con la documentation

Si anula este método, debe llamar a super en algún momento de su implementación.

El ejemplo específico que mencionaste está roto de una manera más sutil: implementaron viewWillAppear lugar de viewWillAppear: así que ese trozo de código ni siquiera se está ejecutando!

En resumen: siempre.

si no lo hace puede causar problemas difíciles de rastrear