Пожалуйста, рассмотрите этот простой пример:
- (void)viewDidLoad
{
[super viewDidLoad];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"BLOCK!!!");
});
while (YES)
{
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:1]];
NSLog(@"RUN LOOP");
}
});
}
Блок, переданный во второй вызов (3 секунды) на dispatch_after
, не запускается. Однако, если я не использую первый dispatch_after
(2 секунды), он работает как положено. Почему?
Я знаю, что если я удаляю цикл while с NSRunLoop
, работающим внутри, то он работает, но мне нужен цикл там