2010-03-10 2 views
0

서버와 함께 사용할 수있는 API 호출을 사용하여 서버에 최소 5 장의 사진을 업로드해야하는 앱이 있습니다. 이를 위해 사진 업로드를 처리 할 스레드를 사용할 계획이며 주요 프로세스는보기 등의 탐색과 함께 진행될 수 있습니다. iphone에서 5 개의 개별 스레드를 생성하거나 단일 스레드를 사용하는 것이 괜찮은지 여부는 결정할 수 없습니다. 그것은 업로드를 할 것입니다. 나중의 경우 분명히 상당히 느려질 것입니다. 기본적으로 HTTP POST 요청은 NSCOnnection을 사용하여 NSMutableURLRequest 개체를 사용하여 서버에 요청됩니다.iphone 앱 사진 앱 스레드에서 서버에 업로드

더 많은 스레드는 더 복잡하고 동기화 문제를 의미,하지만 난 그게 간단하지만 성능을 고려할 경우 실제 스토퍼 단일 스레드보다 더 나은 성능을 의미하는 경우 가능한 코드로 깔끔한 작성하려고 할 수 있습니다. 이 앱의 경험이있는 사람은 누구나 볼 수 있습니다. ??

답변

1

하나의 추가 스레드를 사용하고 하나씩 업로드 대기열을 지정하는 것이 좋습니다. 동시에 5 번의 업로드를 시도하면 네트워크 인터페이스가 막히게됩니다. iPhone은 3G 또는 EDGE 연결을 사용하는 경우가 많으며 항상 WiFi가 아닌 경우가 많으므로 사진 업로드가 실제로 느려지거나 한 번에 5 개가 더 느려질 수도 있습니다.

당신은 아마도 당신을 위해 못생긴 스레딩을 능숙하게 처리하기 위해 NSOperation과 NSOperationQueue를 사용하면 도움이 될 것입니다. 업로드 프로세스를 NSOperation에 마무리 한 다음 각 이미지에 대해 5 회의 대기열을 만듭니다. 꽤 잘 작동해야합니다.

0

Jasarien이 NSOperation 및 NSOperationQueue에 대해 감사드립니다. 그것은 위대한 방법으로 단순화되었습니다. 하지만 지금은 큰 문제가 있습니다. 메인 스레드에서 여분의 스레드를 생성합니다. 이 스레드는 각각의 그림 업로드 작업을 큐에 넣습니다. 따라서이 스레드는 대기열에 5 개의 그림 opload 작업을 대기시킵니다. Mac PC로 작업 할 때 이것은 절대적으로 좋습니다. 이제 앱을 기기에 푸시하면 한 장의 사진 업로드 만 성공하고 나머지는 실패합니다. 대부분의 실패 사례는 서버 시간 초과 오류로 인한 것입니다. 그래서 기본적으로 궁금 오전 여부 NSOperationQueue 한 번에 하나의 작업을 보장하지 않습니까? 첫 번째 사진 업로드가 진행 중이고 다음 작업이 이미 대기열에 추가되었다고하는 경우입니다. 첫 번째 작업이 실행되는 동안 두 번째 작업에 대한 여분의 스레드가 생성됩니까? 이름에서 알 수 있듯이 이전 큐가 완료 될 때까지 대기열에서 대기해야합니다. 그것을하는 abt에가는 방법을 확신하지 마라. 나는 아이폰 카메라로 찍은 사진을 업로드 오전.