iPhone sdk passa mensagens entre controladores de visualização

Eu queria saber qual é a melhor prática para um fluxo de aplicativos no desenvolvimento do iPhone.
Como você passa mensagens entre ViewControllers? Você usa singletons? passá-lo entre vistas ou você tem um controlador principal para o aplicativo que gerencia o fluxo?

Obrigado.