Ich habe einen Beobachter für meine Methode hinzugefügt:Timed Wähler ausgeführt nie
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(closeViewAfterUpdating)
name:@"labelUpdatedShouldReturn"
object:nil];
Dann meine relevanten Methoden:
-(void)closeViewAfterUpdating; {
NSLog(@"Part 1 called");
[self performSelector:@selector(closeViewAfterUpdating2) withObject:nil afterDelay:2.0];
}
-(void)closeViewAfterUpdating2; {
NSLog(@"Part 2 called");
[self dismissModalViewControllerAnimated:YES];
}
Der einzige Grund, warum ich diese Methode in zwei Teile geteilt haben, ist so dass ich eine Verzögerung haben kann, bevor die Methode ausgelöst wird.
Das Problem ist, die zweite Methode wird nie aufgerufen. Meine NSLog
Ausgabe zeigt Part 1 called
, aber es feuert nie Teil 2. Irgendwelche Ideen?
EDIT: Ich rufe die Benachrichtigung von einem Hintergrund-Thread, macht das einen Unterschied aus?
Hier ist, wie ich mein Hintergrund-Thread zu erstellen:
[NSThread detachNewThreadSelector:@selector(getWeather) toTarget:self withObject:nil];
und in getWeather
ich habe:
[[NSNotificationCenter defaultCenter] postNotificationName:@"updateZipLabel" object:textfield.text];
Auch Aufruf:
[self performSelector:@selector(closeViewAfterUpdating2) withObject:nil];
tut Arbeit .
EDITx2: Ich habe es behoben. Nur benötigt, um die Benachrichtigung in meinem Haupt-Thread zu posten und es hat gut funktioniert.
Ich kann das beschriebene Verhalten nicht duplizieren. Ich habe ein Programm erstellt, das nur die 'closeViewAfterUpdating' Methode in der Hauptfunktion aufruft und den Runloop ausführt, und' closeViewAfterUpdating2' wird zwei Sekunden später wie erwartet ausgeführt. – Chuck