有没有办法仍然得到我在哪个队列而不是dispatch_get_current_queue?

时间:2013-07-21 15:03:58

标签: ios objective-c ios6

我的问题很简单

+ (void) SpecialDispatchSyncTo:(dispatch_queue_t)iQueue DispatchBlock:(dispatch_block_t)block
{
    if (dispatch_get_current_queue() == iQueue) 
    {
        block();
    } 
    else 
    {
        dispatch_sync(iQueue, block);
    }  
}

我使用这段代码来提高某些应用的性能。

从代码中使用它是相当明显的 - 当我调度到特定队列时,它直接调用块而不是通过调度程序。

现在我的问题是关于get_current_queue函数的ios 6弃用,有关如何使用ios 6 +保留此功能的任何想法吗?

编辑:

这不是Alternatives to dispatch_get_current_queue() for completion blocks in iOS 6

的副本

为了更好地解释自己,并且不像链接的重复查找问题...我不想在“调用方法的队列”上运行块...而是我想优化调度(我正在覆盖正常情况本质上调度方法)不调度到队列如果我已经在那个队列上。

例如,考虑函数a(它是一个UI事件回调)和函数b(后台低优先级队列)都调用函数c的场景,其中需要将一个块调度到“后台低优先级队列” “......如果我处于功能流程b中,则无意义的调度 - >功能c ...因此我的优化。这提高了我保证的性能,如果需要的话,我会通过增强runloop对象来实现我自己的“获取当前队列”,但我不确定我是否想沿着这条路走下去并想知道是否有人有想法怎么做它

0 个答案:

没有答案