Threading is not necessary for this kind of problem. I would suggest you use the asynchronous functionality built into 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
}
EDIT: If you are really looking to upload a file and want to display a progress bar, then you should look at ASIHTTPRequest framework, which you can find more info on here: http://allseeing-i.com/ASIHTTPRequest/
For uploading a POST request with data using ASIHTTPRequest, you would do:
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];
Again, refer to the link above for the framework and documentation. I highly recommend it.