SetImageWithURLRequest: placeholderImage: success: failure Block not called

I am trying to get an image asynchronously with a url with AFNetworking 2.0

My problem is that neither success nor failure is named

I checked my url in browser so the problem is not here

UIImageView *imgv = [[UIImageView alloc] init];
[imgv setImageWithURLRequest:myURL
            placeholderImage:nil
                     success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
                                        /*some code*/
                     failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
                                        /*some code*/       
];

      

When I look deeper inside setImageWithUrlRequest:placeholderImage:success:failure

   __weak __typeof(self)weakSelf = self;
    self.af_imageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
    self.af_imageRequestOperation.responseSerializer = self.imageResponseSerializer;
    [self.af_imageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        __strong __typeof(weakSelf)strongSelf = weakSelf;
        if ([[urlRequest URL] isEqual:[strongSelf.af_imageRequestOperation.request URL]]) {
            if (success) {
                success(urlRequest, operation.response, responseObject);
            } else if (responseObject) {
                strongSelf.image = responseObject;
            }

            if (operation == strongSelf.af_imageRequestOperation){
                    strongSelf.af_imageRequestOperation = nil;
            }
        }

        [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest];
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        __strong __typeof(weakSelf)strongSelf = weakSelf;
        if ([[urlRequest URL] isEqual:[strongSelf.af_imageRequestOperation.request URL]]) {
            if (failure) {
                failure(urlRequest, operation.response, error);
            }

            if (operation == strongSelf.af_imageRequestOperation){
                    strongSelf.af_imageRequestOperation = nil;
            }
        }
    }];

      

My code worked successfully [self.af_imageRequestOperation setCompletionBlockWithSuccess:^( AFHTTPRequestOperation *operation, id responseObject) {

, but I noticed that __strong __typeof(weakSelf)strongSelf = weakSelf;

bothnil

Any idea?

+3


source to share


1 answer


Your imgv is never saved, so it will be released after the current scope, so in your weakSelf block will be released when the image is successfully loaded, so you get null.



+4


source







All Articles