2014-12-09 1 views
0

Мне нужно загрузить одно изображение и показать на ImageView, однако после его отображения мне нужно удалить изображение с устройства. Но всегда, когда я снова открываю приложение, изображение уже загружено.Временный UIImage никогда не очищается

код:

func getPhoto(pathPhoto: String, imageview: UIImageView) { 

     activityIndicator = UIActivityIndicatorView(frame: CGRectMake(20, 20, imageview.frame.size.width - 40, imageview.frame.size.height - 40)) 
     activityIndicator.color = UIColor(red: 64.0/255.0, green: 109.0/255.0, blue: 157.0/255.0, alpha: 1.0) 
     activityIndicator.startAnimating() 
     imageview.addSubview(activityIndicator) 

     var photoUrlString = urlImages 

     photoUrlString += pathPhoto 

     var imgURL: NSURL = NSURL(string: photoUrlString)! 
     let request: NSURLRequest = NSURLRequest(URL: imgURL) 
     NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: {(response: NSURLResponse!,data: NSData!,error: NSError!) -> Void in 
      if error == nil { 
       if data == nil { 
        NSLog("Erro ao baixar") 
       } else { 
        self.image = UIImage(data: data) 

        dispatch_async(dispatch_get_main_queue(), { 
         self.activityIndicator.stopAnimating() 
         self.activityIndicator.removeFromSuperview() 
         imageview.image = self.image 
        }) 
       } 
      } 
     }) 
    } 

ответ

2

Причина заключается в том, что NSURLConnection автоматически кэширует ответы на HTTP-запросов локально. Поэтому, когда вы не можете сохранять изображение в каталоге приложения, система сохраняет его для вас.

Как вы справляетесь с этим, это зависит от того, почему вы удаляете изображение на устройстве. Если это связано с тем, что вы хотите каждый раз воспроизводить новое изображение, и у вас есть контроль над сервером, может возникнуть смысл исправить это, установив правильные заголовки HTTP, чтобы клиенты не кэшировали изображение.

Если у вас есть какая-то причина безопасности данных, вы можете очистить кеш вручную, либо entire thing, либо just one request.

Существует также хорошее NSHipster article о NSURLCache.

Смежные вопросы