NSURLConnection 委托 Returns 空

NSURLConnection Delegate Returns Null

我在 NSURLConnection 上遵循了一些示例,请参阅下面的最新示例,但我在返回的 FinishLoading 上始终为 null。我检查了 didReceiveResponse 及其获取数据。我不在这里做什么?

已编辑:现在按预期工作。

    #pragma mark NSURLConnection Delegate Methods

    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
        _dataDictionary = [NSMutableDictionary new];
        _theReceivedData = [NSMutableData new];

        [_theReceivedData setLength:0];
        // add object
        [_dataDictionary setObject:_theReceivedData forKey:[connection description]];
    }

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

        NSMutableData *imageData = _dataDictionary[ [connection description] ];
        [imageData appendData:data];
        if([connection description]!=nil && imageData!=nil)
        {
            [_dataDictionary setObject:imageData forKey:[connection description]];
        }
    }

    - (NSCachedURLResponse *)connection:(NSURLConnection *)connection
                      willCacheResponse:(NSCachedURLResponse*)cachedResponse {
        // Return nil to indicate not necessary to store a cached response for this connection
        return nil;
    }

    - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
        // The request is complete and data has been received
        // You can parse the stuff in your instance variable now

        NSData *imageData = _dataDictionary[ [connection description] ];

if(imageData!=nil)
    {
        NSLog(@"%@",imageData);

取出NSMutableData *theReceivedData。将其设为 class 变量。您的问题是 theReceivedData 正在每个方法中被释放。您正在每个方法中创建一个新对象。保留旧的。

NSMutableData *_theReceivedData;

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
            _theReceivedData = [NSMutableData new];
            [_theReceivedData setLength:0];
        }

        - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
            [_theReceivedData appendData:data];
        }

        - (NSCachedURLResponse *)connection:(NSURLConnection *)connection
                          willCacheResponse:(NSCachedURLResponse*)cachedResponse {
            // Return nil to indicate not necessary to store a cached response for this connection
            return nil;
        }

        // LOOK AT THIS 

        - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
            NSLog(@"%@",_theReceivedData);