线程对于这类问题不是必需的。我会建议你使用内置到NSURLConnection的异步功能:
NSURLConnection *connection = [NSURLConnection initWithRequest:request delegate:self];
[connection start];
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//Get your response, do stuff
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
//Show error, retry, etc
}
编辑:如果你真的希望上传文件并希望显示一个进度条,那么你应该看看ASIHTTPRequest框架,您在这里可以找到更多的信息:http://allseeing-i.com/ASIHTTPRequest/
对于上载使用ASIHTTPRequest数据POST请求,你会怎么做:
NSURL *url = [NSURL URLWithString:@"YOUR_URL_HERE"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"123" forKey:@"user_id"];
[request setData:someData withFileName:@"someData.jpg" andContentType:@"image/png" forKey:@"image"];
[request setProgressDelegate:self];
[request setDelegate:self];
[request startAsynchronous];
再次,请参阅上面的链接为框架和文档。我强烈推荐它。
我建议你创建新的线程,你将执行'[NSURLConnection的sendSynchronousRequest:request returningResponse:nil error:nil];'。 – Nekto
我已经考虑为每次上传创建一个线程,但是如何获得关于上传成功或失败的反馈? – skeo
请看我的回答,请 – Nekto