Ios 当我给UIImageView设置动画时,为什么UIImage引用会更改?

Ios 当我给UIImageView设置动画时,为什么UIImage引用会更改?,ios,objective-c,nsurlconnection,nsurlrequest,nsoperationqueue,Ios,Objective C,Nsurlconnection,Nsurlrequest,Nsoperationqueue,我想在多个uiimageview上设置图像动画。图像来自服务器端,带有Url,因此我请求Url并将其转换为图像,然后将动画提供给uiimageview,即交叉融合,出现一个问题:UIImageView中的图像引用正在更改意味着它第一次显示不同的图像,当我滚动时,其他图像显示在同一UIImageView上。这个问题只会第一次出现,因为我维护了imagecache。你知道这个问题吗?。下面是我使用的代码 -(void)requestForImage:(NSString*)strURL{ N

我想在多个uiimageview上设置图像动画。图像来自服务器端,带有Url,因此我请求Url并将其转换为图像,然后将动画提供给uiimageview,即交叉融合,出现一个问题:UIImageView中的图像引用正在更改意味着它第一次显示不同的图像,当我滚动时,其他图像显示在同一UIImageView上。这个问题只会第一次出现,因为我维护了imagecache。你知道这个问题吗?。下面是我使用的代码

-(void)requestForImage:(NSString*)strURL{

    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    NSURLRequest *request;
    NSString * newImageURL = [strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    request = [NSURLRequest requestWithURL:[NSURL URLWithString:newImageURL]];

    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)
    {
         UIImage *image = [UIImage imageWithData:data];

         if ([data length] > 0 && error == nil && image)  //If  success
         {
             //receive data
             [[myImage sharedMyclass] setImage:image withKey:strURL];

             dispatch_queue_t queue_ = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
             dispatch_async(queue_, ^{

                 UIImage *image = [[myImage sharedMyclass] imageForURL:strURL]; //That return image from particular path

                 [self performSelectorOnMainThread:@selector(receivedImage:) withObject:image waitUntilDone:NO];

                 [data writeToFile:[[NSUserDefaults standardUserDefaults] valueForKey:strURL] atomically:YES];

                 dispatch_sync(dispatch_get_main_queue(), ^{


                     [UIView transitionWithView:self
                                   duration:2.0
                                    options: UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationOptionAllowUserInteraction
                                 animations:^{
                                         self.image = image;

                                     }
                                     completion:NULL];
                     self.contentMode = UIViewContentModeScaleAspectFit;
                 });
             });
         }

     }];
}

当您调用该函数时,编译器将检查代码,然后机器将其执行

这意味着=>所有写在系统任务列表中的任务,但是没有人能保证哪一个任务将首先完成

我的建议是把它分成几个小功能, 然后调用第一个函数[self-perform…],然后在每个函数完成部分内创建一个块,并在该块内将图片分配到数组中,然后调用下一个函数(下一个所需图片)

这就是只要当前请求完成,就不会分配其他图片的方式