2012-02-13 54 views
0

我有一个方法(myMethod)在一个类(myClass),它利用CLLocationManager startMonitoringSignificantLocationChanges()。 MyClass是CLLocationManager的委托,我实现了didUpdateToLocation()方法。如何等待某种方法在另一种方法中完成?

我想要做的是从myMethod中调用startMonitoringSignificantLocationChanges(),然后调用didUpdateToLocation()并完成后,我想继续在myMethod中工作。这可能吗?

回答

7

我不会说这是不可能的,但我强烈建议您接受这种工作方式的异步性质,并找到另一种方法来做你想做的事情。如将myMethod分割为“之前”和“之后”部分,并让您的委托触发“之后”。这在Cocoa/iOS中是一个非常常见的模式,从长远来看,您不会对框架感到高兴。

这是特别是如果myMethod是在主线程上运行的东西,则为true,因为在等待位置更新时阻止该线程将锁定整个UI。花太长时间,系统会杀死你的应用程序。

+0

我曾阅读过的最有用的建议。一个灯泡出现了我长期以来遇到的问题。 – trudyscousin 2012-02-14 03:20:52

1

不,不是,但你不需要那样。一旦获得您需要的数据,只需在didUpdateToLocation中继续您的功能即可。

相关问题