美文网首页
iOS Runloop(一)

iOS Runloop(一)

作者: 晓飞90 | 来源:发表于2016-11-14 09:33 被阅读8次

这篇文章主要是自己学习,一个链接和自己的补充

http://www.cocoachina.com/ios/20160307/15590.html

  • runloop停止时,开始另一个runLoop的时候,停止的ruanloop我认为没有释放,一直在等待着触发。

  • 异步测试:

- (BOOL)runUntilBlock:(BOOL(^)())block timeout:(NSTimeInterval)timeout{
      __block Boolean fulfilled = NO;
      void (^beforeWaiting) (CFRunLoopObserverRef observer, CFRunLoopActivity activity) =
 ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
      fulfilled = block();
      if (fulfilled) {
           CFRunLoopStop(CFRunLoopGetCurrent());
      }
 };

 CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler(NULL, kCFRunLoopBeforeWaiting, true, 0, beforeWaiting);
 CFRunLoopAddObserver(CFRunLoopGetCurrent(), observer, kCFRunLoopDefaultMode);

 // Run!
 CFRunLoopRunInMode(kCFRunLoopDefaultMode, timeout, false);

 CFRunLoopRemoveObserver(CFRunLoopGetCurrent(), observer, kCFRunLoopDefaultMode);
 CFRelease(observer);

 return fulfilled;

相关文章

网友评论

      本文标题:iOS Runloop(一)

      本文链接:https://www.haomeiwen.com/subject/atncpttx.html