Это мой минимальный воспроизводимый код:
Код: Выделить всё
- (void)viewDidLoad {
[super viewDidLoad];
__block BOOL completed = NO;
[self doSomethingAsyncAndCompleteOnMainThread:^{
completed = YES;
}];
while (!completed) {
NSLog(@"Wait for 1 sec");
[NSRunLoop.currentRunLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
}
NSLog(@"Completed");
}
- (void)doSomethingAsyncAndCompleteOnMainThread:(void(^)(void))completion {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
completion();
});
}
Однако, когда я запускаю его, У меня есть распечатка:
Код: Выделить всё
Wait for 1 sec
Wait for 1 sec
Wait for 1 sec
Completed
Подробнее здесь: https://stackoverflow.com/questions/784 ... ain-thread