2010-03-10 104 views
0

我有一个应用程序需要上传至少5张照片到服务器使用可用的服务器的API调用。为此,我打算使用线程来照顾照片上传,并且主要过程可以继续进行视图导航等。我不能确定的是在iPhone中产生五个单独的线程还是使用单线程这将做上传。在后来的情况下,显然它会变得很慢。 基本上,使用NSCOnnection将NSMutableURLRequest对象发送到服务器的HTTP POST请求。iphone应用程序照片从应用程序线程上传到服务器

更多的线程意味着更多的复杂性和不同步的问题,但我可以尝试写代码,整齐地,如果这意味着比单个线程这是简单,但真正的塞子如果性能被认为是更好的性能。 任何有这种应用程序的任何经验的人。 ??

回答

1

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

你也许可以从使用的NSOperation和NSOperationQueue很好地处理丑线程你受益。将上传过程包装到NSOperation中,然后为每个图像排队5个上传过程。应该工作得很好。

0

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

相关问题