Hier ist eine Klasse abgeleitet von UIImageView, die ich verwende, vielleicht wird dies Ihnen helfen. (! Eigentlich habe ich das ein gutes Stück vereinfacht, was ich verwenden, aber das war, was Sie gefragt)
Header-Datei, UIHTTPImageView.h:
#import "ASIHTTPRequest.h"
@interface UIHTTPImageView : UIImageView {
ASIHTTPRequest *request;
}
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder;
@end
und UIHTTPImageView.m:
#import "UIHTTPImageView.h"
@implementation UIHTTPImageView
- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder {
[request setDelegate:nil];
[request cancel];
[request release];
request = [[ASIHTTPRequest requestWithURL:url] retain];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
if (placeholder)
self.image = placeholder;
[request setDelegate:self];
[request startAsynchronous];
}
- (void)dealloc {
[request setDelegate:nil];
[request cancel];
[request release];
[super dealloc];
}
- (void)requestFinished:(ASIHTTPRequest *)req
{
if (request.responseStatusCode != 200)
return;
self.image = [UIImage imageWithData:request.responseData];
}
@end
Das scheint genau das, wonach ich suche. Ich habe jedoch eine Frage: Da es keine "Netzwerk-Warteschlange" verwendet, wenn die Anzahl der Zeilen in der Tabelle wirklich groß ist, wird es nicht überladen? –
Es verwendet die freigegebene Warteschlange von ASIHTTPRequest, die standardmäßig maximal 8 gleichzeitige Downloads durchführt. Sie können dies mit etwas wie [[ASIHTTPRequest sharedQueue] setMaxConcurrentOperations: 2] reduzieren, wenn Sie möchten. (Hinweis: benötigt die neuste Version von asihttprequest von git, v1.7 und früher. Setzen Sie die sharedqueue nicht frei.) – JosephH
Nochmals vielen Dank für Ihre Hilfe! Leute wie du machen StackOverflow super! –