FBRunLoopSpinner神器

2016-12-23  本文已影响48人  chsasaw

Runloop介绍
http://www.cnblogs.com/tangbinblog/archive/2012/12/07/2807088.html

巧妙使用block

+ (void)spinUntilCompletion:(void (^)(void(^completion)()))block
{
  __block volatile atomic_bool didFinish = false;
  block(^{
    atomic_fetch_or(&didFinish, true);//先返回didFinish,再修改didFinish
  });
  while (!atomic_fetch_and(&didFinish, false)) {
    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:FBWaitInterval]];
  }
}

执行完block操作,在block中调用completion,didFinish值为true,则runloop停止,否则while循环一直监听didFinish值。

上一篇 下一篇

猜你喜欢

热点阅读