Hallo zusammen,
folgendes Szenario versuche ich möglichst effizient und im Sinne der Objective-C-Programmierung richtig umzusetzen:
Es existieren zwei Klassen: Controller und Request. Erfolgt im View eine Eingabe empfängt der Controller diese, instanziiert ein Request-Objekt, welches grob gesagt eine NSURLConnection abfackelt. Da diese asynchron mit Delegate-Funktionen läuft, weiß ich nicht genau, wann der Controller die vom Request-Objekt empfangenen Daten verarbeiten kann.
Ich habe das jetzt mal mit KVC probiert. Der Controller observiert einen BOOL-Wert, der von der Request-Klasse innerhalb der Delegate-Funktion -(void)connectionDidFinishLoading:(NSURLConnection*)connection gesetzt wird. Ein NSLog-Aufruf in -(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context des Controllers wird auch ausgeführt. Danach erhalte ich in der Konsole allerdings die Meldung:
<Controller: 0x12eb40>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
Key path: requestFinished
Observed object: <Request: 0x1886f0>
Change: {
kind = 1;
new = 1;
old = 0;
}
Context: 0x0
Meine Fragen:
- Ist das überhaupt das richtige Vorgehen?
- Warum erscheint trotz NSLog-Ausgabe die obige Meldung?
Vielen Dank im Voraus für jede Hilfe bzw. Anregung.
Marco
folgendes Szenario versuche ich möglichst effizient und im Sinne der Objective-C-Programmierung richtig umzusetzen:
Es existieren zwei Klassen: Controller und Request. Erfolgt im View eine Eingabe empfängt der Controller diese, instanziiert ein Request-Objekt, welches grob gesagt eine NSURLConnection abfackelt. Da diese asynchron mit Delegate-Funktionen läuft, weiß ich nicht genau, wann der Controller die vom Request-Objekt empfangenen Daten verarbeiten kann.
Ich habe das jetzt mal mit KVC probiert. Der Controller observiert einen BOOL-Wert, der von der Request-Klasse innerhalb der Delegate-Funktion -(void)connectionDidFinishLoading:(NSURLConnection*)connection gesetzt wird. Ein NSLog-Aufruf in -(void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context des Controllers wird auch ausgeführt. Danach erhalte ich in der Konsole allerdings die Meldung:
<Controller: 0x12eb40>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
Key path: requestFinished
Observed object: <Request: 0x1886f0>
Change: {
kind = 1;
new = 1;
old = 0;
}
Context: 0x0
Meine Fragen:
- Ist das überhaupt das richtige Vorgehen?
- Warum erscheint trotz NSLog-Ausgabe die obige Meldung?
Vielen Dank im Voraus für jede Hilfe bzw. Anregung.
Marco
