2010-09-30 2 views
1

Lorsque j'essaie d'envoyer - initWithRequest: delegate: startImmediately: message à NSURLConnection à partir d'une méthode de classe, en passant un objet délégué ad-hoc, les méthodes déléguées ne sont jamais appelées. Lorsque, à la place, - initWithRequest: delegate: startImmediately: est envoyé par un objet, et le délégué de NSURLConnection est self, que tout se passe bien. Quelqu'un peut m'expliquer pourquoi? je suis resté ici pendant trois jours ^^ 'Quelle est la différence en utilisant async NSURLConnection à partir d'une méthode statique avec un objet en tant que délégué, et en l'appelant dans un objet avec self comme délégué?

+0

Qu'est-ce qu'un objet délégué ad-hoc? – Michal

+2

Pouvez-vous poster le code qui rencontre le problème? Peut-être que vous ne retenez pas le "délégué ad-hoc" n'importe où, mais il est impossible pour nous de le dire sans voir votre code. – Greg

+0

le code est un peu complexe .. et je pense refactor ou non, avoir des méthodes seulement comme des méthodes d'instance .. C'est plus une curiosité profonde, qu'un vrai problème insoutenable. Mais je voudrais être bon avec du cacao .. donc .. @Michal: je voulais dire un objet conçu dans le seul but d'être un délégué pour NSURLConnection. @GregInYEG: le délégué est, en fait, publié nulle part: p et c'est [[alloc] init]^_^ La seule différence entre les deux cas, c'est que dans le premier, la méthode est appelée à partir d'un contexte statique (c'est-à-dire: une méthode de classe), et dans la seconde .. il est appelé par une méthode d'instance. – mndhkr

Répondre

2

Il n'y a pas de différence. Si vos méthodes déléguées ne sont pas appelées, c'est parce que votre implémentation est évidemment incorrecte. Le délégué cible doit être dans le même cycle, et si vous libérez des objets auto-libérés ou quelque chose comme ça, votre implémentation est fausse.

Postez votre code ou revérifiez votre travail.

+0

Lorsque NSURLConnection est utilisé par la méthode statique, le contrôle retourne à la méthode appelante, sans qu'aucune méthode de délégation ne soit appelée (elle est également vérifiée avec des points de rupture). rien n'est autoeleased ni publié, étant donné que NSURLConnection est instancié en utilisant initWithRequest: delegate: startImmediately: l'application n'est pas multithread. – mndhkr

Questions connexes