YBTaskScheduler
YBTaskScheduler copied to clipboard
iOS 任务调度器,为 CPU 和内存减负(用于性能优化)
适配 iOS 13 的 UINavigationBarAppearance,解决导航栏在 iOS 15 上显示异常的问题。
仔细看了代码,认为YBTaskScheduler的执行顺序逻辑并不可用。 双线队列固然能保证每个block任务在queue中是有序的(FIFO、LIFO、优先级),但最后执行的时候是在多个串行队列异步执行的。 然而**多个异步线程之间的执行顺序其实是不能保证的**,单纯的任务保存有序没有特别的价值。
一个小小的优化:k 与 2^n 取模,可以优化为 k & (2^n - 1)。
`static void addRunLoopObserver() { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ taskSchedulers = [NSHashTable weakObjectsHashTable]; CFRunLoopObserverRef observer = CFRunLoopObserverCreate(CFAllocatorGetDefault(), kCFRunLoopBeforeWaiting | kCFRunLoopExit, true, 0xFFFFFF, runLoopObserverCallBack, NULL); CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes); CFRelease(observer); }); }`...