MySynchManager
クラスには共有インスタンスがあります。
MySynchManager
クラスの関数の1つは
- (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
が呼び出されることがありますが、ブロックが呼び出されないことがあります。ブロックが印刷された後、ログ印刷ステートメントのみを確認します。
この背後にある理由を説明できる人はいますか?