Nie korzystałem z GCD ani z wielu wątków w moich aplikacjach, ale natknąłem się na sytuację, w której muszę uruchomić metodę lub dwa z innego wątku. Po zakończeniu tej metody muszę wywołać inną metodę, używając głównego wątku z wywołania zwrotnego. Szukałem w pobliżu, aby zobaczyć, jak wykryć, kiedy wątek zakończył operację, ale nadal nie jest zbyt jasne w tej sprawie.IOS Grand Central Dispatch z metodą oddzwaniania
Stworzyłem aplikację testową i właśnie skorzystałem z metody viewDidLoad dla szybkiego przykładu.
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSLog(@"viewDidLoad called");
sleep(5); // simulating a thread being tied up for 5 seconds
dispatch_async(dispatch_get_main_queue(), ^{
[self callbackMethod]; // method called after above thread has completed running
});
});
}
Czy ten przykład będzie działał dla tego, co próbuję zrobić? Podczas uruchamiania aplikacji wydaje się, że metoda wywołania zwrotnego jest wywoływana po zakończeniu trybu uśpienia (5). Czy to właściwy sposób radzenia sobie z tą sytuacją, czy też jestem daleko?
Tak, to wygląda na to, że powinno działać poprawnie. – geraldWilliam
Dziękujemy za szybkie odpowiedzi! @ Dzięki za dodatkowe linki. Bardzo doceniane! – tg2007