저는 네이티브 연락처를 서버에 업로드 한 다음 응답을받습니다 (JSON, 이미 앱을 설치 한 연락처 목록). 기본 연락처가 충분히 크면 서버 응답이 느리고 불안정합니다. 그리고 사용자는 다른 일을 할 수 없습니다. 그래서 네트워크 요청을 백그라운드 스레드에 넣습니다. 100 개의 연락처를 업로드 할 때마다 루프 작업이 완료 될 때까지 몇 가지 작업을 수행 한 다음 다음 100 개의 연락처를 수행합니다.내 배경 작업 스레드가 UI 스레드를 차단하는 이유는 무엇입니까?
그러나 실행 중 예상대로 결과가 아닙니다. 백그라운드 스레드가 실행 중이면 서버를 계속 요청합니다. UI 스레드가 차단되었지만 여전히 아무 것도 할 수 없습니다.
이것은 백그라운드 스레드에서 긴 루프가 발생합니까? 내가 2 스레드지만, 그들은 (테스트 장치는 아이팟, 1 코어입니다 CPU 리소스를 경쟁 할 것입니다. 그리고 이것은 관련된 핵심 숫자가 아닌 것 같아요)?
아무도 이런 종류의 시나리오를 처리하는 방법에 대한 힌트를 말할 수 있습니까? 미리 감사드립니다!
업데이트 : 근본 원인을 발견
. App 대리자의 전역 변수가 잘못된 값으로 설정되므로 UI 동작이 이상합니다. 나는 모든 네트워크 요청 방법을 주석으로 알았다. 따라서이 문제는 다중 스레딩과 관련이 없습니다. 귀찮게해서 미안해.
GCD를 사용하고 있습니까? – CodaFi
@CodaFi 아니요. 애플리케이션 위임에 NSOperationQueue를 사용합니다. 100 개의 대화 상대에 대한 모든 요청이 대기열로 전달됩니다. – LetBulletFlies
더 좋은 질문은 GCD를 사용할 수 있습니까? 아니면 iOS 3.x를 타겟팅해야합니까? – CodaFi