Класс MySynchManager
имеет общий экземпляр.
Одна из функций класса MySynchManager
—
- (void)uploadSession:(NSString *)sessionId {
// run the upload process on a separate thread to not to block the main thread for user interaction
// process upload data in serial Queue
NSLog(@"Inside uploadSession");
if (!_serialQueue) {
NSLog(@"uploadSession, _serialQueue is NOT ACTIVE");
[self setRunLoopStarted:FALSE];
_serialQueue = dispatch_queue_create("sessionUploadQueue", NULL);
dispatch_async(_serialQueue, ^{
[[MySyncManager sharedInstance] dispatchSession:sessionId];
});
}
else {
//[self setRunLoopStarted:FALSE];
dispatch_async(_serialQueue, ^{
[self dispatchSession:sessionId];
});
NSLog(@"Adding block to the dispatch queue is complete");
}
}
uploadSession:@"session"
вызывается из контроллеров представления.
Проблема, с которой я сталкиваюсь, заключается в том, что иногда код, присутствующий в dispatchSession
, вызывается, но иногда блок не вызывается. Я наблюдаю за оператором печати журнала только после того, как блок напечатан.
Кто-нибудь из вас может объяснить причину этого?