【问题标题】:What thread are iphone delegate methods run in for webview and core location callbacks?iphone 委托方法在哪个线程中运行用于 webview 和核心位置回调?
【发布时间】:2010-03-03 22:28:11
【问题描述】:

我有一个问题,看起来像是一个竞争条件,其中包含一个 webview 回调和一个位置管理器回调,它们与相同的变量和一个警报对话框交互 - 该对话框是在位置回调中创建的,应该在 webview 回调中关闭。我认为标准对象(如 webview 和核心位置)的委托回调将在主线程中运行 - 这不正确吗?

【问题讨论】:

    标签: iphone uiwebview thread-safety delegates core-location


    【解决方案1】:

    如果有疑问,您可以这样做:

    - (void) someCallback
    {
        if ([NSThread isMainThread] ==  NO) {
            [self performSelectorOnMainThread: @selector(someCallback)];
        }
    }
    

    确保您始终在主线程上执行回调方法,从而防止并发问题。

    当然,您也可以使用@synchronized 块,但根据我的经验,最好依靠在主线程上执行方法的同步特性。

    【讨论】:

      猜你喜欢
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多