在Swift中5秒后打破while循环

时间:2016-04-21 07:31:22

标签: swift loops time break seconds

我希望超时并在5秒内突破这个循环。我在网上找到的唯一一件事就是每秒都有一个计数变量增量,然后如果计数是5则会中断,但是想知道是否有一种更简单,更少密码的方式。请帮忙!

locationManager.startUpdatingLocation()
while (locationManager.location == nil) {
    //searching...
}
locationManager.stopUpdatingLocation()

2 个答案:

答案 0 :(得分:4)

有一个while循环的问题是,如果它在主线程上,它将阻止用户使用该应用程序。不应该这样做,你应该开始更新位置,然后使用GCD安排后台线程(假设您已经在OSX上运行; GCD在Linux上不可用)在五秒内运行以禁用该位置经理。您也可以安排它在一秒钟内运行,检查它是否存在,然后再次尝试或让它运行五秒钟。

答案 1 :(得分:0)

你可以创建这样的延迟函数:

func delay(delay:Double, closure:()->()) {

        dispatch_after(
            dispatch_time( DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), closure)


    }

并在使用后像这样:

 delay(5){
locationManager.location = //something different from nil or you can try with break sentence ; not sure if with break will work though .

    }