2011-11-26 3 views
0

내 응용 프로그램에서 NSRunLoop을 사용하고 있습니다. 단 하나의 문장NSRunLoop을 올바르게 중지하는 방법은 무엇입니까?

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; 

for 루프에서 수행됩니다. 3 초 동안 특정 텍스트를 2 초마다 업데이트해야합니다. 모든 것이 잘 작동하지만, 화면이 실행되는 곳 (그리고 가장 중요한 팅이 실행되는 동안)을 종료 한 다음 화면을 다시 입력하고 다시 종료하면 내 앱이 종료됩니다. 나는 NSRunLoop 실행을 멈추어야한다고 생각하는데, 실행 중일 때 종료하면 어떻게해야할지 모르겠다. 나 한테 조언 좀 해줄 래? 소스 코드의 비트를 포함하도록 질문을 수정하기위한

for (int i = 1;i <= 3;i++) 
{ 
    int result = [self analyzeCards]; 

    ((UILabel *)[bidLabels objectAtIndex:i]).text = [bidResults objectAtIndex:result]; 


    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]]; 

    bidIndexes [i - 1] = result; 
} 
+1

이보다 조금 더 많은 코드를 표시해야합니다. Andrey. 예를 들어, 새로운 실행 루프를 만드십니까? UILabel 또는 UILabel 업데이트와 관련된 요소를 표시 할 수 있습니까? –

답변

1

감사 :

내 루프입니다.

내가 수행했던 runUntilDate 작업을 수행하지 말고 대신 분리 된 스레드 (making sure to actually do the updating the labels -- the user interface -- on the main thread)로 수행하는 것이 좋습니다.

bidLabels 배열의 개체가 부실하거나 출시되었거나 단순히 불필요하므로 충돌이 발생할 가능성이 큽니다. 창을 다시 열 때마다 배열을 재설정하십시오.

+0

대단히 감사합니다. Michael –

관련 문제