我已经采用了iOS应用程序并且遇到了异常请求问题。
我们有一个WebService类,它具有以下代码;
// create the request
NSURLRequest* request=[NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:30.0];
self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (self.connection) {
self.receivedData = [NSMutableData data];
} else {
这在背景线程中看起来像是非常香草的NSURLRequest。但是,一旦这个调用结束,它就冻结了UITableViewController。也许我误解了应该发生的事情,但似乎它应该能够滚动表格视图。上面的代码有什么问题吗?我正在调试的一种可能性是我使用SDWebImage来缩减缩略图并且冻结可能是由于下载了所述图像,但我认为这将发生在后台线程中。如果上面的NSURLRequest阻塞了主线程并且有什么方法可以验证我可以验证SDWebImage是否是罪魁祸首?
THX
答案 0 :(得分:0)
这种情况的典型模式是创建请求。将self设置为委托并处理委托方法中的响应,如下所示:
-(void)someMethod
{
NSURLRequest* request=[NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];
self.connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
if(statusCode == 200) // or whatever makes sense in your situation.
self.receivedData = [NSMutableData data];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[requestData appendData:data];
}
或者其他一些......但是后来我不知道你在哪里调用所有这些东西...而且你似乎在同一个方法中做了两个,这可能是也可能不是连接:didReceiveResponse。