usleep()锁定iPhone提示

时间:2013-07-29 02:52:44

标签: ios objective-c multithreading nsthread

我正在使用CLLocationManager,如果该程序是第一次安装,则需要用户接受或拒绝共享其位置。我想要的是编程自己等到用户提示。

现在的问题是我在等usleep()

while ([CLLocationManager authorizationStatus] == USER_NOT_PROMPTED) {
    usleep(10000);
}

但是这会导致实际的iPhone被锁定,导致位置共享问题没有弹出,因此程序会挂起。有没有办法在单独的线程中运行这些用户提示?我使用的是iOS 6.1

1 个答案:

答案 0 :(得分:1)

您的程序正在冻结,因为您正在阻止运行循环,这使系统无法提示用户使用位置的权限。 请勿这样做。如果您希望用户立即允许或拒绝使用其位置,只需在应用中尽早拨打位置管理员电话。如果您不希望用户在决定之前能够做任何其他事情,请不要给他们任何事情 - 或许显示一个空白屏幕。

但这听起来并不是一个好的用户体验,所以最好找到让他们尽可能多做的方法。为什么不假设用户拒绝您使用其位置的权限,直到他们另有决定为止?