Impedir o acesso a UIViewControllers com o controlador de barra de abas (storyboard)

Eu atualmente encontrando um problema com o meu aplicativo iOS.
Eu estou tentando incorporar um padrão de login gradual, ou seja: o uso pode acessar alguns dos aplicativos sem precisar fazer o login.

Os recursos necessários são os seguintes:

Em todos os momentos, o usuário pode visualizar todos os itens de navegação que exigem loginQuando o usuário tenta acessar um uiview (controlador) que requer login, ele será solicitado com um UIAlertView solicitando que faça o login. (De preferência, o UIAlertView aparecerá quando o aplicativo reconhecer que o destino de entrada iniciado é restrito).

No começo eu usei uma subclasse de UIViewController que, no inicializador designado (initWithCoder), verificaria NSUserDefaults para ver se o usuário estava logado. Eu então subclassei disso. As limitações foram as seguintes:

Não foi possível usar outras subclasses do UIViewController, ou seja, UITableViewControllerO UIAlertView surgiu após a exibição da visualização, o que, presumo, causaria erros se o UIViewController com subclasse assumisse que o usuário estava logado.

Resumo da pergunta:
Eu gostaria de saber como impedir condicionalmente os usuários de acessar certas UIView (Controller) e subclasses de UIViewController, e quando isso acontece, apresentar um UIAlertView.

Atualização 1
As categorias e / ou protocolos podem ser uma solução viável?

Atualização 2
CodaFi apontou singletons como uma ótima solução para gerenciar o estado do usuário.

Com isso implementado, agora preciso descobrir como controlar o acesso do usuário.
Como estou usando storyboards, sinto que a implementação mais versátil seria subclassificar o UIStoryboardSegue e, no método perform, verificar se o usuário está tentando acessar um UIViewController restrito (talvez controladores restritos tenham uma propriedade de protocolo que especifica o status necessário: logado / Fora). No entanto, a armadilha aqui é que você não pode escolher a classe / subclasse de um UIStoryboardSegue no editor gráfico de storyboard. Estou ciente que eu poderia fazer isso programaticamente, no entanto, que parece tedioso como eu teria que adicionar IBActions e assim para métodos que executam segues, além disso, eu não acho que funcionaria com a maneira como elementos como navigationController e TabbarControllers se comportam.

Alguém tem uma solução viável para restringir a navegação do usuário?

Atualização 3
Eu adicionei uma resposta a esta pergunta, no entanto, eu ainda a considero como não respondida porque a resposta que eu escrevi não leva em consideração segues entre controladores de barra de navegação. No entanto, isso pode ajudar algumas pessoas.

questionAnswers(2)

yourAnswerToTheQuestion