Threading не является необходимым для такого рода проблем. Я бы посоветовал вам использовать асинхронную функциональность, встроенную в 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 /
Для загрузки POST-запроса с данными с использованием ASIHTTPRequest, вы должны сделать:
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];
Опять же, обратитесь к ссылке выше для структуры и документации. Я настоятельно рекомендую это.