【问题标题】:How do I wait for a particular method to finish within another method?如何等待特定方法在另一种方法中完成?
【发布时间】:2012-02-13 15:30:22
【问题描述】:

我在一个类 (myClass) 中有一个方法 (myMethod),它利用 CLLocationManager 来启动MonitoringSignificantLocationChanges()。 MyClass 是 CLLocationManager 的委托,我已经实现了 didUpdateToLocation() 方法。

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

【问题讨论】:

    标签: objective-c ios xcode ios5


    【解决方案1】:

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

    如果myMethod 是在主线程上运行的东西,则尤其是正确,因为在等待位置更新时阻塞该线程会锁定整个 UI。时间过长,系统会杀掉你的应用。

    【讨论】:

    • 我读过的关于 SO 的最有用的建议。一个灯泡亮了我很久的一个问题。
    【解决方案2】:

    不,它不是,但你不需要那个。获得所需数据后,只需在 didUpdateToLocation 中继续执行您的功能即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 2021-07-21
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2022-11-19
      • 2022-08-07
      相关资源
      最近更新 更多