2011-11-10 2 views
0

Je crée une classe de service en Objective-C qui communique avec un serveur HTTP. Je suis familier avec NSURLConnection et les classes associées pour faire une demande asynchrone à un serveur. Jusqu'à présent, j'ai utilisé self en tant que délégué, répondant aux quatre méthodes de délégué (didReceiveResponse, didReceiveData etc.) requises pour l'appel.Méthode/sélecteur de délégué pour NSURLConnection

La classe de service que je suis en train de créer doit être capable de gérer plusieurs requêtes à la fois et de répondre différemment à chacune d'elles. Je cherche un moyen d'y parvenir, sans un interrupteur sans fin ou if-elseif dans la méthode connectionDidFinishLoading.

J'ai l'idée de créer une classe déléguée qui implémente les quatre méthodes décrites ci-dessus, et de le donner à l'objet NSURLConnection à qui parler. Toutefois, je souhaite notifier la classe parent lorsque la connexion se termine le chargement et ensuite déclencher une autre méthode dans la classe parente. Et bien sûr, le délégué ne sait pas quelle méthode c'est - cela pourrait être n'importe quoi.

Comment procéder? Est-il possible de définir un sélecteur pour la classe déléguée et de déclencher ce sélecteur (qui est une méthode) lorsque la requête est terminée? Comment est-ce que je fais une telle chose?

(Création d'un délégué pour mon délégué, puis appeler une méthode superclasse pourrait faire l'affaire, mais je suis vraiment dans les méthodes génériques, comme un sélecteur.)

Toute aide est grandement appréciée!

Cordialement,

Reinder

Répondre

0

je passerais un bloc (^{ ... }) au délégué qu'il doit appeler lorsque la connexion est terminée.

0

Vous avez trois options:

  1. Utilisation d'un block callback
  2. En utilisant notifications
  3. L'utilisation d'un délégué, comme vous avez déjà suggéré.

Tous les trois sont parfaitement valides, mais avec divers avantages/inconvénients. Apprenez-en tous, puis décidez lequel utiliser dans chaque scénario. :-)

Souvent plus d'une solution sera choisie. Par exemple, de nombreuses classes d'Apple implémentent une méthode déléguée et envoient une notification pour le même événement.

Questions connexes