如何等待特定方法在另一种方法中完成?

时间:2012-02-13 15:30:22

标签: objective-c ios xcode ios5

我在类(myClass)中有一个方法(myMethod),它利用CLLocationManager来启动监视有意义的位置变换()。 MyClass是CLLocationManager的委托,我已经实现了didUpdateToLocation()方法。

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

2 个答案:

答案 0 :(得分:7)

我不会说这是不可能的,但我强烈建议您接受其工作方式的异步性,并找到另一种方法来做您正在尝试做的事情。就像将myMethod分成“之前”和“之后”部分一样,让你的代表触发“之后”。这是Cocoa / iOS中一个非常常见的模式,从长远来看,你会更乐意不与框架作斗争。

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

答案 1 :(得分:1)

不,不是,但你不需要那样。获得所需数据后,只需在didUpdateToLocation中继续使用您的功能。