2010-03-03 3 views
1

동일한 변수 및 경고 대화 상자와 상호 작용하는 webview 콜백 및 위치 관리자 콜백을 사용하는 경쟁 상태 인 것처럼 보이는 문제가 있습니다.이 대화 상자는 위치 콜백에 생성되며 webview 콜백에서 닫아야합니다. Webview 및 코어 위치 같은 표준 객체에 대한 대리자 콜백이 주 스레드에서 실행될 것이라고 생각했습니다. 맞지 않습니까?webview 및 코어 위치 콜백에 대해 실행되는 iPhone 위임 메서드는 어떤 스레드입니까?

+0

어떤 방법을 사용하고 있습니까? – conorgriffin

답변

1

다음과 같이 뭔가를 할 수 의심하는 경우 :

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

가 항상 주 스레드에서 콜백 메소드를 실행하고, 따라서 동시성 문제를 방지하고 있는지 확인합니다.

물론 @synchronized 블록을 사용할 수도 있지만 제 경험상 주 스레드에서 메서드를 실행하는 동기성에 의존하는 것이 훨씬 낫습니다.

+0

팁이 좋습니다. 감사. (그리고 그들은 주 스레드에서 실행됩니다). – Wendy