在ios5上未调用NSURLConnection连接:didReceiveData:

在ios5上未调用NSURLConnection连接:didReceiveData:,ios5,nsurlconnection,Ios5,Nsurlconnection,一个奇怪的问题。 我想从web加载一个图像,所以我使用NSURLConnection来完成。 当我在ios4.3上测试代码时,一切都正常。 但当我在ios5.0上启动我的应用程序时,我发现了一个联系:无论我做了什么,都没有调用didreceiveData。 通常会调用其他else函数,就像ios4.3中的connectiondifinishload和ios5.0中的connectiondifinishdownloading一样。 所以你们,谁能帮我,谢谢 -(void)load { if

一个奇怪的问题。 我想从web加载一个图像,所以我使用NSURLConnection来完成。 当我在ios4.3上测试代码时,一切都正常。 但当我在ios5.0上启动我的应用程序时,我发现了一个联系:无论我做了什么,都没有调用didreceiveData。 通常会调用其他else函数,就像ios4.3中的connectiondifinishload和ios5.0中的connectiondifinishdownloading一样。 所以你们,谁能帮我,谢谢

-(void)load
{
    if(isDownloading){
        return;
    }
    if(conn != nil){
        [conn release];
    }
    if(data != nil){
        [data release];
        data = nil;
    }
    [self isDownloading:YES];
    ImageDownloadData* imageDownloadData = [imageList objectAtIndex:count];
    NSURL* url = [imageDownloadData url];
    NSURLRequest* request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
    conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    if(conn){
        [conn start];
    }
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)rd
{
    NSLog(@"data");
    if(!data){
        data = [[NSMutableData alloc] initWithData:rd];
        return;
    }
    [data appendData:rd];
}

我不能确定这是否与您遇到的问题相同,但我遇到了一个类似的问题,并通过去掉对
nsurlconnectiondownloaddegate
的in方法和引用解决了这个问题。显然,
NSURLConnection
的代理一次只能实现从
nsurlconnectionelegate
派生的两个协议之一

。Apple将NSURLConnectionLegate从非正式协议更改为正式协议,并将一些方法扩展为两个额外的子协议:和。(但奇怪的是,他们贬低了NSURLConnectionLegate中相同的方法,但没有记录它们移动到了哪里。)


我注意到,在针对6.0 API编译代码时,如果我同时实现了
NSURLConnectionDataDelegate
nsurlconnectiondownloaddedelegate
中的方法,我就很难让Cocoa Touch调用
connection:didReceiveData:
。我实现的所有其他方法都按预期进行了调用。

我无法确定这是否与您遇到的问题相同,但我遇到了类似的问题,并通过删除in方法和对
nsurlconnectiondownloaddegate
的引用来解决。显然,
NSURLConnection
的代理一次只能实现从
nsurlconnectionelegate
派生的两个协议之一

。Apple将NSURLConnectionLegate从非正式协议更改为正式协议,并将一些方法扩展为两个额外的子协议:和。(但奇怪的是,他们贬低了NSURLConnectionLegate中相同的方法,但没有记录它们移动到了哪里。)

我注意到,在针对6.0 API编译代码时,如果我同时实现了
NSURLConnectionDataDelegate
nsurlconnectiondownloaddedelegate
中的方法,我就很难让Cocoa Touch调用
connection:didReceiveData:
。我实现的所有其他方法都按预期调用