Pergunta

Eu tenho um aplicativo para iPhone que basicamente é a obtenção de informações a partir de uma API (em XML, mas talvez JSON eventualmente). Os objetos de resultado geralmente são exibidos em controladores de vista (mesas principalmente).

Aqui está a arquitetura agora.

Eu tenho aulas NSOperation que buscar os diferentes objetos do servidor remoto. Cada uma dessas classes NSOperation, terá um método delegado personalizado que irá disparar de volta os objetos resultantes como eles são analisados, e, finalmente, um método quando há mais resultados estão disponíveis. Assim, o protocolo para os delegados será algo como:

(void) ObjectTypeResult:(ObjectType *)result;
(void) ObjectTypeNoMoreResults;

Eu acho que a solução funciona bem, mas eu acabar com um monte de protocolos de delegado ao redor e então meus controladores de vista tem que implementar todos estes métodos de delegado. Eu não acho que é assim tão mau, mas estou sempre à procura de um design melhor.

Então, eu estou pensando em usar NSNotifications para remover o uso dos delegados. Eu poderia incluir o objeto na parte userInfo da notificação e objetos apenas Post como recebidos, e, em seguida, um evento final, quando não estão mais disponíveis. Então eu poderia apenas ter um método em cada controlador de exibição para receber todos os dados, mesmo quando se usa vários objetos em um controlador. †

Assim, alguém pode compartilhar comigo algumas vantagens / desvantagens de cada abordagem. Devo considerar refatoração meu código para usar eventos em vez dos delegados? É um melhor que o outro em determinadas situações? Em meu cenário Eu realmente não estou olhando para receber notificações em vários lugares, talvez por isso os delegados protocolo baseado são o caminho a percorrer.

Obrigado!

Foi útil?

Solução

Na verdade, seu projeto soa som. A abordagem clara Cacau está usando delegados, e é muito preferido para atirar objetos ao redor. Além disso, definindo seus protocolos desta forma torna o seu código muito explícito e fácil de entender. Todos em todos: manter o bom trabalho

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top