オブジェクトsetImageWithURLRequest:
で が呼び出されたときに、成功ハンドラも失敗ハンドラも呼び出されていないようです。私のイメージも設定しません。プレースホルダーを使用すると設定されますが、URL からの画像は設定されません。UIImage
SetImageWithURL
setImageWithURL:
placeholder:
すぐにコードを投稿しないことを許してください。AFNetworking
画像ビューを非同期に設定するために、2 つの方法 ( を使用) を使用しようとしました。
[_imageView setImageWithURL:[NSURL URLWithString:@"path/to/file"]];
[_imageView setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.example.com/path/to/image.jpg"]] placeholderImage:[UIImage imageNamed:@"your_image_here.jpg"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
NSLog(@"Your image request succeeded!");
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Your image request failed...");
}];
これらをトリガーしてみましviewDidLoad
たが、画像ビューが読み込まれません。
の実際の関数宣言を調べたところ、setImageWithURLRequest:
呼び出し時に成功ブロックも失敗ブロックも実行されていないようです。NSLogs
何が起こるかを理解できるように、コードを挿入しました。
- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
placeholderImage:(UIImage *)placeholderImage
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure
{
NSLog(@"Log shows");
[self cancelImageRequestOperation];
NSLog(@"Log shows");
UIImage *cachedImage = [[[self class] af_sharedImageCache] cachedImageForRequest:urlRequest];
NSLog(@"Log shows");
if (cachedImage) {
NSLog(@"Log does not show");
self.image = cachedImage;
self.af_imageRequestOperation = nil;
if (success) {
success(nil, nil, cachedImage);
NSLog(@"Log does not show");
}
} else {
NSLog(@"Log shows");
self.image = placeholderImage;
AFImageRequestOperation *requestOperation = [[AFImageRequestOperation alloc] initWithRequest:urlRequest];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
if ([[urlRequest URL] isEqual:[[self.af_imageRequestOperation request] URL]]) {
self.image = responseObject;
self.af_imageRequestOperation = nil;
NSLog(@"Log does not show");
}
if (success) {
success(operation.request, operation.response, responseObject);
NSLog(@"Log does not show");
}
[[[self class] af_sharedImageCache] cacheImage:responseObject forRequest:urlRequest];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if ([[urlRequest URL] isEqual:[[self.af_imageRequestOperation request] URL]]) {
self.af_imageRequestOperation = nil;
NSLog(@"Log does not show");
}
if (failure) {
failure(operation.request, operation.response, error);
NSLog(@"Log does not show");
}
}];
self.af_imageRequestOperation = requestOperation;
[[[self class] af_sharedImageRequestOperationQueue] addOperation:self.af_imageRequestOperation];