2014-06-17 5 views
0

저는 응용 프로그램에 다소 실망한 버그가 있습니다. 이것이 Xcode 6.0을 실행한다는 사실과 관련이 있는지 확실하지 않지만 개인적으로 내 코드와 관련이 있다고 생각합니다.UILabel에 문자열을 할당 할 때 지연이 발생했습니다.

문제점 : 저는 데이터를 업데이트하는 것을 의미하는 방법을 통해 UILabel s의 두 문자열을 할당 할 때, 데이터가 실제로 표시 할 수있는 좋은 30 초 소요 .

샘플 코드 :

self.availHours.text = [NSString stringWithFormat:@"%.2f", 24.0 - totalEventHours]; 

나는 시도했다 : 나는이 방법은 정말 긴 계산하고 정보를 업데이트 할 것을 고려하고 어떻게 든 있는지 NSLog의 내 코드를 접종 한 . 그러나 그 결과에 따르면, 콘텐츠가 나타나기 전에 을 완료합니다. 또한 논리를 주석 처리하고 동일한 결과를 갖는 직접 문자열 지정으로 대체했습니다.

개인 결론 : 그것은, 재 할당에 다시로드되지 않은 내용처럼 어떻게 든이 현재 데이터를 가지고 있는지 확인하기 위해 뷰를 말할 필요가? 그게 필요하지 않다면, 이것이 일어날 수있는 몇 가지 이유가 무엇입니까?

감사합니다.

내가 주석으로
+0

있습니까? 모든 UI 업데이트는 주 스레드에서 수행해야합니다. – rdurand

+0

아, 아직 iOS (및 프로그래밍 전반)에 익숙하지 않으므로 고려하지 않았습니다. 할당 라인에 브레이크 포인트를 놓았고, 스레드 4 UI 편집, heh. 최대한 빨리 정확한 답을 표시하겠습니다. – crenfrow

답변

2

, 당신은 주 스레드에서 레이블 텍스트를 설정하려고 할 수 있습니다 : 당신은 당신이 메인 스레드에서 레이블 텍스트를 변경하고 있는지

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 

    // On the main thread 
    self.availHours.text = [NSString stringWithFormat:@"%.2f", 24.0 - totalEventHours]; 

}]; 
+0

그게 해결책이야, 고마워. – crenfrow

관련 문제