Hi,
ich versuche gerade alle fünf Sekunden Daten via TCP von einem Server zu holen. Das Holen der Daten funktioniert erfreulicherweise einwandfrei. Dummerweise lässt der Timer aber meine Anwendung einfrieren.
Alles anzeigen
Beim Aufruf der Timer-Methode (egal ob das jetzt manuell geschieht oder erst beim Firen des Timers) bleibt das Programm stehen und das Debuggerfenster öffnet sich. Ich hab gerade keine schlüssige Erklärung warum.
Hat jemand da eine Idee?
Chris
ich versuche gerade alle fünf Sekunden Daten via TCP von einem Server zu holen. Das Holen der Daten funktioniert erfreulicherweise einwandfrei. Dummerweise lässt der Timer aber meine Anwendung einfrieren.
Quellcode
- - (void)awakeFromNib
- {
- // Timer starten: alle 5 Sekunden Daten holen
- trackTimer = [[NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(trackTimerFired:) userInfo:nil repeats:YES] retain];
- // Aber bitte jetzt schonmal
- [self trackTimerFired:nil];
- }
- - (void)trackTimerFired:(NSTimer*)timer
- {
- Socket *controlSocket = [Socket socket];
- NSMutableData *response = [NSMutableData data];
- NSString *caption = [NSString string];
- // Künstler holen
- [controlSocket connectToHostName:@"192.168.178.22" port:1308];
- [controlSocket writeString:@"get current artist"];
- [controlSocket readData:response];
- caption = [caption stringByAppendingString:[[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]];
- // zurücksetzen
- [response init];
- // Tracknamen holen
- [controlSocket writeString:@"get current trackname"];
- [controlSocket readData:response];
- caption = [caption stringByAppendingString:@"\n"];
- caption = [caption stringByAppendingString:[[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]];
- // TextField setzen
- [currentTrack setStringValue:[caption copy]];
- // Alles weg damit
- [response release];
- [caption release];
- [controlSocket release];
- }
Beim Aufruf der Timer-Methode (egal ob das jetzt manuell geschieht oder erst beim Firen des Timers) bleibt das Programm stehen und das Debuggerfenster öffnet sich. Ich hab gerade keine schlüssige Erklärung warum.
Hat jemand da eine Idee?
Chris
