iOS Runloop(一)

2016-11-14  本文已影响8人  晓飞90

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

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

- (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;
上一篇 下一篇

猜你喜欢

热点阅读