1

누군가가 UITableView 내부의 행에 닿을 때마다 일련의 비동기식 NSURLConnection을 시작하여 데이터를 다운로드 한 다음 해당 데이터를 구문 분석하고 핵심 데이터에 저장합니다.비동기식 NSURLConnection 이후 코어 데이터 차단 UI didLoadResource on iPhone

문제는 데이터를 다운로드하는 동안 UI가 반응하지만 파싱 및 저장이 시작되면 UI가 응답하지 않게된다는 것입니다.

NSURLConnection은 NSURLConnection 프로토콜을 구현하는 클래스 내에 래핑되며 NSURLConnection이 발생하면 didLoadResource는 구문 분석 및 저장을 처리하는 DataAdapter 클래스를 시작합니다. 내 UI를 차단의 원인 thats 생각하고있어.

전에이 문제를 다뤘던 사람이 있습니까? 내 옵션은 무엇입니까? DataAdapter를 NSOperation에 넣으시겠습니까?

답변

3

기본적으로 코어 데이터는 UI에서 사용하는 동일한 스레드 인 기본 스레드에서 작동합니다. 다른 스레드에서 별도의 컨텍스트를 만들거나 다운로드가 끝날 때까지 기다렸다가 정보를 코어 데이터로 옮겨야합니다. 현재 Core Data는 일부 데이터의 다운로드가 완료 될 때까지 기다리는 동안 주 스레드와 인터페이스를 고정시킵니다.

Multithreading with Core Data을 참조하십시오.

+0

핵심 데이터는 완료된 데이터를 다운로드 할 때까지 기다려야합니다. DataAdapter는 구문 분석을 시작하지 않으며 - (void) connectionDidFinishLoading : (NSURLConnection *) 연결이 호출 될 때까지 NSURLConnection 대리자 메서드를 저장하지 않습니다. – Bryan

관련 문제