我正在开发一个ios应用程序,appDelegate我的内容是:
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
self.api.signInWithToken(emailstring, token: authtokenstring) {
(object: AnyObject?, error:String?) in
if(object != nil){
self.user = object as? User
// go straight to the home view if auth succeeded
var rootViewController = self.window!.rootViewController as UINavigationController
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var homeViewController = mainStoryboard.instantiateViewControllerWithIdentifier("HomeViewController") as HomeViewControllerenter
// code here
rootViewController.pushViewController(homeViewController, animated: true)
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)
这api.signInWithToken是一个用Alamofire进行的异步调用,我想在func应用程序的最后一端返回true之前等待它的完成.
Ant*_*ton 11
注意:你不应该这样做,因为它会阻塞线程.有关更好的方法,请参阅Nate上面的评论.
有一种方法可以等待异步调用使用GCD完成.代码如下所示
var semaphore = dispatch_semaphore_create(0)
performSomeAsyncTask {
...
dispatch_semaphore_signal(semaphore)
}
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER)
dispatch_release(semaphore)
Run Code Online (Sandbox Code Playgroud)
如果您对信号量一无所知,维基百科有一篇OK 文章.
| 归档时间: |
|
| 查看次数: |
9499 次 |
| 最近记录: |