我想知道如何从 URL 请求中异步获取返回值 1 或 0。
目前我是这样做的:
NSString *UTCString = [NSString stringWithFormat:@"http://web.blah.net/question/CheckQuestions?utc=%0.f",[lastUTCDate timeIntervalSince1970]];
NSLog(@"UTC String %@",UTCString);
NSURL *updateDataURL = [NSURL URLWithString:UTCString];
NSString *checkValue = [NSString stringWithContentsOfURL:updateDataURL encoding:NSASCIIStringEncoding error:Nil];
NSLog(@"check Value %@",checkValue);
这是有效的,但是它会阻塞我的主线程,直到我从 URL 收到回复,我该如何设置它以便它在另一个线程而不是主线程中执行?
编辑:回答 我最终用这个调用了我的函数,它运行良好:)
[self performSelectorInBackground:@selector(shouldCheckForUpdate) withObject:nil];
最佳答案
你可以使用 NSURLConnection
类
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
并使用其委托(delegate)方法处理其响应和错误。
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
你可以找到 NSURLConnection 的实现
编辑:虽然 NSURLConnection
是由 apple 提供的,但更推荐的放置 URL 请求的方式。但是我发现AFNetworking
库非常节省时间,易于实现且强大但与第三方实现一样简单。你应该试一试。
关于iphone - 如何发送异步 URL 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8515667/