我想向用户显示地图中的当前位置,我知道这不是即时任务。我想在ASYNC任务中调用我的showCurrentLocation()函数。我试图学习回调闭包,但我无法理解如何为此创建ASYNC任务。我知道这不是stackoverflow的最佳问题模板,但我不知道我怎么能有不同的问题。 感谢您的任何帮助。 有一个很好的编码。
答案 0 :(得分:5)
在过去,我创建了一个名为AsyncTask的课程,用于此处描述的课程。
最近我为 swift 3
更新了它它有两种通用类型:
BGParam
- 执行时发送给任务的参数类型。
BGResult
- 后台计算结果的类型。
如果不需要其中一个(或两个),您可以将其设置为Optional或忽略。
在代码示例中,我引用了函数showCurrentLocation()
&您在OP& amp;提到的getCurrentLocation()
评论。
BGParam
设置为Int
& BGResults
设置为CLLocationCoordinate2D
AsyncTask(backgroundTask: {(param:Int)->CLLocationCoordinate2D in
print(param);//prints the Int value passed from .execute(1)
return self.getCurrentLocation();//the function you mentioned in comment
}, afterTask: {(coords)in
//use latitude & longitude at UI-Main thread
print("latitude: \(coords.latitude)");
print("latitude: \(coords.longitude)");
self.showCurrentLocation(coords);//function you mentioned in OP
}).execute(1);//pass Int value 1 to backgroundTask
答案 1 :(得分:4)
有一项名为GCD (Grand Central Dispatch)的技术可用于执行此类任务。
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// do some task
dispatch_async(dispatch_get_main_queue()) {
// update some UI
}
}