Ich habe eine App, die eine verwendet, um dynamisch von einer externen API basierend auf Benutzereingabe zu suchen.Fehlermeldung, dass UIKit nicht von einem sekundären Thread aufgerufen werden soll
Die App sucht die externe API fein und Ergebnisse korrekt angezeigt, aber wenn ich eine Zeile aus den Suchergebnissen auswählen, friert der Bildschirm ein und ich bekomme diesen Fehler;
Versucht, die Web-Sperre von einem anderen Thread als der Haupt-Thread oder die Web-Thread UIKit erhalten soll nicht von einem sekundären Thread
Ich habe absolut keine Ahnung, genannt werden, wie ich dieses Problem beheben .
Hier ist der Code;
- (void) run: (id) param {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL: [self URL]];
[parser setDelegate: self];
[parser parse];
[parser release];
[delegate parseDidComplete];
[pool release];
}
- (void) parseXMLFile: (NSURL *) url
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
[self setURL: url];
NSThread* myThread = [[NSThread alloc] initWithTarget:self
selector:@selector(run
object: nil];
[myThread start];
[pool release];
}
Wie holen Sie die API-Daten? Sieht so aus, als ob du das asynchron in einem anderen Thread machst. UIKit ist nicht threadsicher, also müssen UI-Sachen immer im Hauptthread gemacht werden. Können Sie uns einen relevanten Code geben? – Felix
Hier ist der Code; - (void) run: (id) param { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSXMLParser * parser = [[NSXMLParser-Zuordnung] initWithContentsOfURL: [Eigen-URL]]; [Parser setDelegate: self]; [Parser analysieren]; [Delegat parseDidComplete]; } - (void) parseXMLFile: (NSURL *) URL { NSAutoreleasePool * Pool = [[NSAutoreleasePool Alloc] init]; [self setURL: url]; NSThread * myThread = [[NSThread alloc] initWithTarget: Selbst Selektor: @selector (run Objekt: nil]; [MyThread starten]; } – hmthur
ich Thread bin mit, so dass der Bildschirm nicht, während die externe API gefriert Ist es möglich, dass ich das Problem lösen kann? BTW, ich verstehe nicht, was genau dieses Problem bedeutet (UIKit sollte nicht von einem sekundären Thread aufgerufen werden) – hmthur