草庐IT

grand-central-dispatch

全部标签

ios - swift 3 转换

我已经为swift2.2中的并发API调用编写了代码。当我从swift2.2更改为swift3时,我遇到了swift语法问题。帮帮我letendPoints=[.email,.others]letfetchGroup=dispatch_group_create()letqueue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);dispatch_apply(endPoints.count,queue){(index)inletenumType=endPoints[index]switchenumType{case

swift - iOS 应用处于后台模式时的 DispatchQueue.main?

如果URLSession发送请求并在收到响应之前iOS应用程序进入后台模式,self.myLabel.text会得到更新吗?DispatchQueue.main会工作吗?funcupdateUILabel(callback:(NSDictionary?)->Void){//createpostrequestleturl=URL(string:"https:anyserver.xyz”)!varrequest=URLRequest(url:url)request.httpMethod="POST"lettask=URLSession.shared.dataTask(with:reques

ios - GCD 主线程崩溃问题(需要解释)?

为什么这段代码会导致崩溃?DispatchQueue.main.sync{//OperationToPerform}为什么我们必须这样写:-DispatchQueue.global().async(execute:{print("test")DispatchQueue.main.sync{print("mainthread")}})当我们在CellForRowAt或任何其他方法中编写代码时,它在哪个线程中进入主线程或全局线程,以了解它如何以同步或异步方式工作? 最佳答案 根据Apple的说法,尝试在主队列上同步执行工作项会导致死锁。

Swift - 在调用完成处理程序 swift 之前等待异步 for-in 循环完成

我对实现此目标的最佳方法感到困惑。我正在尝试通过网络调用保留我正在循环并加在一起的Double值的总和。我读过的所有内容都说要使用DispatchGroup。我的完成要么调用得太早,要么根本没有被调用,我已经尝试了我能想到的.enter、.leave和.wait的所有配置。letgroup=DispatchGroup()varrunningTotal:Double=0.00ref.observeSingleEvent(of:.value){(snapshot)inguardletbills=snapshot.valueas?[String:AnyObject]else{//errorr

swift - 将 Swift 类标记为 final 是否也会使所有包含的 var、let 和函数自动获得 Static Dispatch 的好处?

我正试图从我的应用程序中榨取最后一点性能。我尝试尽可能在类上使用Structs(没有状态共享,默认情况下直接分派(dispatch)等等)。但是我的ViewController和UIView对象显然仍然是类。出于性能原因,我想对我的每一个方法和数据成员强制执行直接调度。我是否还需要在我的类(class)中标记每个var、let和funcfinal,或者是是否足以将托管类标记为最终类,以便其下的所有内容都可以利用直接方法分派(dispatch)?换句话说:在每个方法和变量之前都粘贴final非常乏味。所以我希望将它放在类(class)本身上具有强制直接dispatch所有类(class)

swift - 为什么使用 GCD 的 Swift CLI 代码与不使用并发的代码运行速度相同?

因此,我在Swift3中编写了一些代码作为CLI来练习使用GrandCentralDispatch。想法是,有三个数组,每个数组都填充了100000000个值。然后我有一个函数来总结数组的所有数字并将其打印出来。然后还有两个函数来计算这些数组的总和。一个在每个数组上运行sum函数三次。另一个在每个数组上异步运行求和函数(线程?,调度?,不确定在这里使用什么词。)这是代码:importFoundationfuncsum(arraya:[Int]){varsuma=0fornina{suma+=n}print(suma)}funcgcd(a:[Int],b:[Int],c:[Int]){l

ios - 如何在后端作业中实现纺车?

我需要在后端作业中实现一个纺车。我的后端作业在一个单独的类中。classViewControllerA:UITableViewController{//CodevarGetBackendRecordObj=GetBackendRecord(initparam:param);//CODETOSTARTANIMATION(SPINNINGWHEEL)self.view.addSubview(self.activityIndicator)self.activityIndicator.bringSubview(toFront:self.view)self.activityIndicator.s

swift - iOS : A specific function can be called from multiple threads/places, 但我希望每次调用都在队列中执行

我有一个函数readData从HealthKit读取数据,需要几秒钟才能执行。可以从多个线程/位置调用此函数,但我希望每次调用都在一个队列中执行,一次一个,而不是并行执行。有没有一种简单的方法可以使用GCD或OperationQueues在SwiftforiOS中实现这一点? 最佳答案 是的,串行DispatchQueue应该可以解决您的问题。确保您在需要访问它的每个函数都可以访问它的范围内创建它。letserialQueue=DispatchQueue(label:"serialQueue")serialQueue.async{/

ios - 如果响应返回 200 以外的状态代码,是否停止我的 NSURLSession?在 SWIFT

我正在尝试使用NSURLSession加载图像。如果响应返回200以外的状态代码,我该如何“停止”NSURLSession?我想显示网络问题弹出窗口。classViewController:UIViewController{overridefuncviewDidLoad(){super.viewDidLoad()loadData()}funcloadData(){self.downloadFullImageFrom("https://www.google.fr/logos/doodles/2015/holidays-2015-day-3-6399865393250304-5649050

swift - 如何使用异步方法遍历数组,并以正确的顺序将返回值放入数组中

我有一个数组,其中包含x个值(不超过25个)。每个值都对应一个我希望从远程端点检索的项目对象。我使用以下方法为每个相应的标识符检索项目对象...funcgetValues(valueIDs:[Int]){varvalues=[Item]()letgroup=dispatch_group_create()foriin0...valueIDs.count-1{dispatch_group_enter(group)Item.special(valueIDs[i],completion:({resultinifletvalue=result.response.result{values.app