2009-03-04 7 views
0

백그라운드 처리가 진행되는 동안 UIActivityIndicatorView를 표시하려고합니다. 아래의 간단한 코드는 시뮬레이터에서 시도 할 때 작동합니다 (경고가 표시됨). 그러나 Xcode에서 내 전화기로 다운로드하면 배경 스레드가 전혀 호출되지 않는 것 같습니다. (경고가 표시되지 않음)
아이디어가 있으십니까?스레딩은 시뮬레이터에서 작동하지만 iPhone에서는 작동하지 않습니다.

-(void)viewDidLoad { 
    [self performSelectorInBackground:@selector(runInAnotherThread) withObject:nil]; 

} 

-(void) runInAnotherThread { 
    NSAutoreleasePool *pool = [ [ NSAutoreleasePool alloc ] init ]; 
    int i; 
    for(i=0;i < 1000 ;i ++){ 
     NSLog(@"INDEX = %d", i); 
    } 

    [self performSelectorOnMainThread : @ selector(backToMainThread) withObject:nil waitUntilDone:NO]; 
    [ pool release ]; 
} 

-(void) backToMainThread { 

    UIAlertView *completeAlert = [[UIAlertView alloc] 
        initWithTitle:@"Back to main " 
       message: @"Success" 
       delegate:nil 
       cancelButtonTitle:@"OK" 
       otherButtonTitles:nil]; 
    [completeAlert show]; 
    [completeAlert release];  
} 
+0

또한 멀티 스레딩의 경우 NSOperation 및 NSOperationQueue를 조사 할 가치가 있습니다. 정말 인생을 훨씬 편하게 해줍니다. – nduplessis

답변

1

빌드를 청소 해 보셨습니까? 방금 장치 및 시뮬레이터에서 코드를 실행했으며 두 경우 모두 예상대로 작동합니다.

1

원시 스레드 조작 대신 NSOperation을 사용하십시오. 그것은 당신을위한 모든 종류의 것들을 추상화합니다 (우선 순위, 자동 반복 풀 등 ...). ? 필요한 경우 NSOperation 하위 클래스에 일종의 대리자를 추가하여 콜백을 얻을 수 있습니다.

0

너무 빨리 답장 해 주셔서 감사합니다.

이 코드 조각에는 문제가 전혀 없음이 밝혀졌습니다. 키 체인의 값에 따라이 코드를 실행했습니다. 내 시뮬레이터의 키 체인에는 그 가치가 있지만, 테스트 아이폰에는이 가치가 없습니다.

여러분 모두를 괴롭히는 데 너무 어리 석습니다. 그러나 nduplessis의 답장을 추적하면 문제를 좁힐 수있었습니다.

+0

질문에 답을하기보다는이 정보로 질문을 업데이트해야합니다. –

+0

완료. 죄송 Newbie 실수 –

+0

Kristopher 지적대로, 당신은 원래의 질문을 업데이트 할 수 있습니다 _and_이 대답을 삭제하십시오. –

관련 문제