NSURLCache Problem mit der Cache-Antwort

Ich schreibe eine iPhone-Anwendung, eine der Registerkarten ist ein Twitter-Feed. Ich analysiere Twitter-XML und füge es in eine Tabellenansicht ein. Falls keine Internetverbindung besteht, möchte ich die Cache-Ergebnisse der letzten Internetverbindung anzeigen, und die Tabellen wurden aktualisiert. Ich benutze NSURLCache dafür wie folgt:

NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:xmlLink]
        cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60];
NSURLCache *sharedCache = [NSURLCache sharedURLCache];

NSCachedURLResponse *response = [sharedCache cachedResponseForRequest:theRequest];

if (response) {
   NSLog(@"Got Response");
} else {
   NSLog(@"Didn't got Response");  
}
 self.objectFeedConnection = [[[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES] autorelease];

Ich kann sehen, dass NSLog zum ersten Mal "Keine Antwort erhalten" ausgibt, da es das erste Mal ist, dass ich diese Website besuche (http://www.twitter.com/ ...) Ich kann auch sehen, dass die Antwort zwischengespeichert wird, da ich die willCacheResponse-Methode implementiert habe, die aufgerufen wird, nachdem initWithRequest gestartet wurde:

 - (NSCachedURLResponse *) connection:(NSURLConnection *)connection 
   willCacheResponse:(NSCachedURLResponse *)cachedResponse
 {
    NSLog(@"willCache Reponse"); 
    NSCachedURLResponse *newCachedResponse = nil;    
    if ([[[[cachedResponse response] URL] scheme] isEqual:@"http"]) {
            newCachedResponse = [[[NSCachedURLResponse alloc]
            initWithResponse:[cachedResponse response]
            data:[cachedResponse data]
            userInfo:nil
            storagePolicy:[cachedResponse storagePolicy]]
            autorelease];
 }
     return newCachedResponse;
}

Beim zweiten Besuch auf dieser Website kann ich deutlich sehen, dass NSLog "Got Response" ausgibt, was bedeutet, dass ein Cache-Treffer aufgetreten ist, weshalb willCacheResponse dies tun solltenicht erneut aufgerufen werden, aber aus irgendeinem seltsamen Grund wird es immer wieder aufgerufen und ruft die Informationen nicht aus dem Cache ab, sondern versucht, sie erneut zwischenzuspeichern.

Irgendeine Idee, was dieses Problem verursacht?

Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage