2014-11-03 1 views
0

다음 코드에서 사용자가 UI와 상호 작용하면서 데이터를 처리 할 수 ​​있도록 앱을 멀티 스레드하고 있습니다. 그러나 데이터를 처리하는 검색 기능의 끝에서 UITextView의 텍스트를 "Complete"로 설정했지만 다음과 같은 오류가 발생합니다.신속한 멀티 스레딩 중에 UIElements를 변경하면 오류가 발생합니다.

*** 캐치되지 않은 예외로 인해 응용 프로그램이 종료 됨 'NSInternalInconsistencyException', 이유 : '메인 스레드에서만 실행!'


내가 뭘 잘못하고 있는지 알 수 있습니까?

override func viewDidAppear(animated: Bool) { 
super.viewDidAppear(false) 

let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT 
dispatch_async(dispatch_get_global_queue(priority, 0), {()->() in 

    self.Search() 


    dispatch_async(dispatch_get_main_queue(), { 

    }) 
}) 


} 

답변

0

정확히 UITextView을 "완료"로 업데이트하고 있기 때문에 앱이 예상치 않게 작동합니다. Apple의 설명서에 따르면 :

Threads are tricky to program with in general and, of course, large parts of Cocoa Touch can only be called from the main thread.

"검색"기능을 업데이트하여 UI 업데이트가 없는지 확인하십시오.

관련 문제