Wysyłanie wiadomości z wątku w tle do głównego wątku na iOS
Mam aplikację na iOS, w której wykonuję zadania na wątku w tle. Po zakończeniu każdego zadania chcę wysłać wiadomość do głównego wątku, aby móc przejść wzdłuż mojego niestandardowego paska postępu do odpowiedniego etapu.
Jaki jest najprostszy, a jednocześnie najbezpieczniejszy sposób na osiągnięcie tego celu?
EDYTUJ 1
Jest to metoda, której używam:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
// get background tasks done.
[self.background backgroundMethod];
});
EDYCJA 2
Oto przykład tego, co próbowałbym użyć w odpowiedzi @ Madboya. W klasie, w której wykonuję metody w tle, mam wskaźnik do mojego paska postępu. Czy sądzimy, że to zadziała?(Zwróć uwagę na zmianę również na EDYCJA 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.
}