Senden von Nachrichten vom Hintergrund-Thread zum Haupt-Thread unter iOS
Ich habe eine iOS-App, in der ich Aufgaben im Hintergrund-Thread erledige. Nach Abschluss jeder Aufgabe möchte ich eine Nachricht an den Haupt-Thread senden, damit ich entlang meiner benutzerdefinierten Fortschrittsleiste zur entsprechenden Phase wechseln kann.
Was ist der einfachste und gleichzeitig sicherste Weg, dies zu erreichen?
EDIT 1
Dies ist die Methode, die ich benutze:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
// get background tasks done.
[self.background backgroundMethod];
});
BEARBEITEN 2
Hier ist ein Beispiel für den Versuch, die Antwort von @ Madboy zu verwenden. Innerhalb der Klasse, in der ich Methoden im Hintergrund durchführe, habe ich einen Zeiger auf meine Fortschrittsanzeige. Glauben wir, dass das funktionieren würde?(Bitte beachten Sie die Änderung auch in EDIT 1).
@implementation BackgroundClass
@synthesize delegate;
@synthesize customProgressBar
- (void)backgroundMethod
{
// Run tasks
}
- (void)delegateSaysBackgroundMethodIsFinished
{
[self performSelectorOnMainThread:@selector(tasksDone:) withObject:self.customProgressBar waitUntilDone:NO];
}
@implementation CustomProgressBar
- (void)tasksDone
{
// change UI to reflect progress done.
}