多线程

BOOL isRunning = NO;

      do {

            isRunning = [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDatedistantFuture]];

     } while (isRunning);

 dispatch_sync 和  dispatch_async 区别:

 dispatch_async(queue,block)  async 异步队列,dispatch_async 函数会立即返回, block会在后台异步执行。

 dispatch_sync(queue,block)   sync 同步队列,dispatch_sync 函数不会立即返回,及阻塞当前线程,等待 block同步执行完成。

- (void)viewDidLoad

{

    [super viewDidLoad];

    NSLog(@"=================4");

    dispatch_sync(dispatch_get_main_queue(), ^{

        NSLog(@"=================5");

    });

    NSLog(@"=================6");

}

可能会出现线程死锁。

原文地址:https://www.cnblogs.com/SensenCoder/p/4886507.html