線程對於這類問題不是必需的。我會建議你使用內置到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