2012-02-29 5 views
0

내 코딩을 개선해야합니다. 더 나은 것을 찾고 있습니다.iPhone의 서버에서 데이터를 가져 오는 것이 더 나은 처리

내 문제는 내가

http://192.168.11.222/images/a http://192.168.11.222/images/b http://192.168.11.222/images/c http://192.168.11.222/images/d http://192.168.11.222/images/e 을 칠 필요가 예를 들어, 이미지 (100)

이 10 가지 url.that의 URL에서 서버에서 데이터를 가져올 필요가있다 http://192.168.11.222/images/f http://192.168.11.222/images/g http://192.168.11.222/images/h http://192.168.11.222/images/i

이미지가 포함 된 서버의 폴더입니다.

현재 NSURLConnectionWithTag를 통해이 작업을 수행하고 response.and를 구문 분석하여 이것을 처리하는 다른 방법이 있습니까? 이 경우에는 진행률 막대도 표시해야합니다.

답변

1

URL 당 하나의 작업으로 NSOperationQueue를 설정하고 3 개의 동시 작업으로 설정합니다. 그런 다음 NSURLConnection의 비동기 API를 사용하여 다운로드를 수행하십시오.

진행률 막대의 경우 각 개별 파일을 완료 한 후에 진행률을 업데이트하고 한 번에 두 개씩 수행하는 것이 좋습니다. 어쨌든 대기 시간은 "진행 상황"의 절반 이상이 될 가능성이 있으므로, 핑 시간을 예측하기 시작하지 않으면 전송 된 실제 바이트를 기반으로 한 진행 표시 줄이 매우 정확하지 않을 것입니다 (매우 큰 이미지가 아닌 경우).

작업 대기열과 GCD가 작동하는 방법을 배워야하지만 일단 정렬하면 실제로는 많은 코드가 작성되지 않을 것이고 견고 할 것입니다.

기본적으로 다운로드 할 각 URL의 작업 대기열에 코드 블록을 추가하고 큐에서 각 코드를 다운로드하는 방법을 파악한 다음 각 개별 코드 블록이 완료되면 다른 블록을 실행합니다 진행 막대를 업데이트하려면 주 스레드 (dispatch_sync(dispatch_get_main_queue(), ^{ ... }))에서 차단하십시오.

0

앱에 네트워크 관련 코드를 작성하려는 경우 AFNetworking을 살펴 보시기 바랍니다. 네트워크 API iOS는 이미 덜 번거롭지 만 제공됩니다.

관련 문제