iphone app照片从app线程上传到服务器

时间:2010-03-10 09:48:26

标签: iphone

我有一个应用需要使用服务器提供的API调用将至少5张照片上传到服务器。为此,我计划使用将负责照片上传的线程,并且主要过程可以继续浏览视图等。我无法确定是否可以在iphone中生成五个单独的线程或使用单个线程这将进行上传。在后来的情况下,显然会变得非常缓慢。 基本上,将使用NSCOnnection使用NSMutableURLRequest对象向服务器发出HTTP POST请求。

更多的线程意味着更多的复杂性和同步问题,但我可以尝试尽可能整洁地编写代码,如果它意味着比单个线程更好的性能,这个线程很简单,但如果考虑性能则是真正的阻塞。 任何有这种应用经验的人。 ??

2 个答案:

答案 0 :(得分:1)

我建议使用一个额外的线程并一个接一个地排队上传。如果同时尝试5次上传,最终会堵塞网络接口。请记住,iPhone通常是3G或甚至EDGE连接,而不是WiFi,因此照片上传速度可能非常慢,如果一次只有5,则更慢。

你可能会受益于使用NSOperation和NSOperationQueue来很好地处理丑陋的线程。将上传过程汇总到NSOperation中,然后为每个图像排队5个。应该工作得很好。

答案 1 :(得分:0)

Jasarien感谢NSOperation和NSOperationQueue。它确实在很大程度上简化了。但是现在我遇到了一个重大问题。 我从主线程中生成了一个额外的线程。该线程将每个图片上传操作排队。因此,该线程在队列中排队5个图片opload操作。使用Mac PC时,这绝对没问题。现在,当我将应用程序推送到设备时,只有一张图片上传成功,其余部分失败。大多数失败的情况是由于服务器超时错误。所以基本上我想知道,NSOperationQueue是否一次只确保一个操作?我的意思是如果第一张图片上传正在进行中并且说下一个操作已经添加到队列中。当第一个操作运行时,它是否会为第二个操作创建一个额外的线程?我认为顾名思义,它必须在队列中等待,直到前一个完成。不知道如何去做。我正在上传用iphone相机拍摄的照片。