2009-05-25 5 views
2

Folgendes betrifft eine iPhone App.Wie kann ich eine Antwort von einer asynchronen Anfrage an einen Singleton erhalten?

Ich möchte ein Singleton verwenden, um eine asynchrone URL-Anfrage zu behandeln. Ich habe darüber gesprochen, aber was ist der beste Weg, dem Singleton zu sagen, wohin die Antwort gesendet werden soll, wenn sie empfangen wird? Ich brauche die Antwort an die Klasse, die ursprünglich den Singleton aufgerufen hat.

Könnte ich einen Zeiger auf die aufrufende Klasse an den Singleton übergeben, zusammen mit der Delegate-Methode (der aufrufenden Klasse), die aufgerufen wird, wenn die Antwort empfangen wird?

Dank

+0

Können Sie auch einige Code-Snippets schreiben, wie Sie asynchrone URL-Anfragen aufrufen? Wie ich weiß, können Sie immer einen Benutzerparameter übergeben, der die Delegate-Methode empfängt. – cocoafan

Antwort

2

Zunächst einmal sind Singletons in der Regel ein schlechtes Design und das sieht genau wie eine Situation, wo man nicht einen Singleton benötigen sollte. Siehe Singletons are Pathological Liars von Miško Hevery und andere Artikel in seinem Blog. (Ich hoffe, das sieht nicht arrogant aus, wird das Loswerden des Singletons wahrscheinlich Ihr Design besser und einfacher codieren.)

Zweitens, wenn ich Ihre Frage richtig verstehe, könnten Sie den Singleton einen Selektor übergeben, der nach aufgerufen werden sollte Der Singleton empfängt die Daten. Die API in der Singleton-Klasse könnte wie folgt aussehen:

- (void) download: (NSURLRequest*) request andTell: (id) delegate to: (SEL) doThis; 

Dann, nachdem Sie die Daten fertig geladen würden Sie tun:

[delegate performSelector:doThis withObject:receivedData]; 

Enthält diese die Frage beantworten?

+1

Genau die Art von Antwort, die ich suchte, danke. –

Verwandte Themen