ios - 在 Swift 中根据条件使用调度队列的最佳方法

标签 ios iphone swift

我想用dispatchqueue执行代码。但前提是某个条件为真。到目前为止我正在这样做,但必须有一种不那么难看的方法。

if !sync {
    return self.tasksInQueue[userID]
}
return SYNC_QUEUE.sync {
    return self.tasksInQueue[userID]
}

最佳答案

我不确定它是否更干净......但你可以定义一个变量来定义要执行的常见工作......

let task = { self.tasksInQueue[userID] }
if sync { 
   return SYNC_QUEUE.sync { task() }
} else { 
   return task()
}

如果这种类型的 if 发生在很多地方,理论上您可以创建一些通用函数来为您进行检查..

func optionalSync <T> (_ sync: Bool, task: () -> T) {
    if sync { 
       return SYNC_QUEUE.sync { task() }
    } else { 
       return task()
    }
}

然后每当您需要执行操作时...

optionalSync(sync) { self.tasksInQueue[userID] }

关于ios - 在 Swift 中根据条件使用调度队列的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51416398/

相关文章:

swift - 你如何使用类型变量快速转换

objective-c - 在应用程序中跨类共享方法的最佳实践是什么?

ios - 为什么滚动 UICollectionView 时我的单元格 subview 框架会发生变化

iphone - 触摸由两层处理

iphone - 用户与 uiview 和动画完成 block 的交互

swift - 为什么在 SwiftUI 中过渡结束后应用 EdgesIgnoringSafeArea 修饰符?

ios - 漏洞 : MPMediaItem Download Status on iOS & MPMediaPropertyPredicate using assetURL

iphone - 如何在iPhone应用程序中以秒为单位设置NSTimer时间间隔

ios - 如何在 iOS 中增量更新文件。 (文件修补)

iphone applicationWillResignActive - 获取原因