0

オブジェクトsetImageWithURLRequest:で が呼び出されたときに、成功ハンドラも失敗ハンドラも呼び出されていないようです。私のイメージも設定しません。プレースホルダーを使用すると設定されますが、URL からの画像は設定されません。UIImageSetImageWithURLsetImageWithURL: 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];
4

2 に答える 2

1

setImageWithURL:は UIImageView カテゴリであり、UIImageView でのみ使用される設定には使用できませんUIImage

[imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeHolderImage"]];

ドキュメントは次のとおりです: http://engineering.gowalla.com/AFNetworking/Categories/UIImageView(AFNetworking).html

于 2012-10-18T20:56:06.157 に答える
0

助けてくれてありがとう、ここにいるみんなが気づいたように、私のコードには問題はありませんでした。問題は実際にはARCに関するものでした。AFNetworking ファイルでオフにしました。電源を入れた後、すべてがうまくいきました。

于 2012-10-19T23:25:38.513 に答える