Tag: nscache

在tableviewcontroller中caching图像

我想将图像保存到TableViewcontroller的caching中。 我写了下面的代码,但cacheImage总是为零。 @property (nonatomic,strong)NSCache *imageCache; @synthesize imageCache; – (void)viewDidLoad { [super viewDidLoad]; self.imageCache = [[NSCache alloc] init]; } – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; cell.textLabel.text = [[tableData objectAtIndex:indexPath.row] valueForKey:@"name"]; cell.textLabel.font = [UIFont fontWithName:@"BebasNeue" size:24]; cell.textLabel.textColor = [UIColor whiteColor]; UIImage *cachedImage = [imageCache objectForKey:@"indexObject"]; […]

在UITableViewCell中下载和caching图像

注意:请不要图书馆。 这对我学习很重要。 另外,这里有各种各样的答案,但我没有find解决这个问题很好。 请不要标记为重复。 提前致谢! 我遇到的问题是,如果您在桌面上滚动速度非常快,您将看到旧图像和闪烁。 从我读的问题的解决scheme是取消URLSession数据请求。 但我不知道如何在正确的地点和时间做到这一点。 可能有其他解决scheme,但不能确定。 这是我迄今为止: 图像caching类 class Cache { static let shared = Cache() private let cache = NSCache<NSString, UIImage>() var task = URLSessionDataTask() var session = URLSession.shared func imageFor(url: URL, completionHandler: @escaping (image: Image? error: Error?) -> Void) { if let imageInCache = self.cache.object(forKey: url.absoluteString as NSString) { completionHandler(image: […]

NSCache objectForKey:在iOS 8上总是返回零后的内存警告

我遇到了一个问题,只发生在iOS 8上。我用NSCache来存储我的图像。 在收到内存警告后,我会重新获取图像并存储到caching中。 但是,警告后caching不能再存储我的图像。 它通过使用objectForKey:总是返回给我。 这是我的代码的一部分: @interface ViewController () { NSCache *imageCache; } @implementation ViewController – (instancetype)init { self = [super init]; if (self) { imageCache = [[NSCache alloc] init]; [imageCache setTotalCostLimit:1024 * 1024 * 1]; } return self; } – (void)imageDownloadManager:(ImageDownloadManager *)manager didReceiveImage:(UIImage *)image forObjectID:(NSString *)objecID { NSUInteger cost = [UIImageJPEGRepresentation(image, 0) length]; image […]

NSCache – 标记对象不可移动

当用户通过菜单在视图控制器之间切换时,如果他有足够的内存,我想caching它们。 为了做到这一点,我想使用NSCache来存储许多UIViewControllers 。 但是,我不知道我怎么可以告诉NSCache目前使用的对象,不应该被删除。 例如,当我运行应用程序,加载很less的视图控制器,并退出应用程序, NSCache自动删除所有viewControllers (这是有道理的 – 应用程序将能够保持在前台较长时间)。 但是,它也删除了当前显示的视图控制器,这不是我想要的。 我怎样才能标记特定的对象不可移动?

在iOS中以编程方式清空caching

有巧合的人知道我可以清空我正在开发的iOS应用程序的caching内存,在它的背景(applicationDidEnterBackground)的时刻? 我已经调查了关于NSCache,但我仍然无法理解如何检索caching基本上删除/释放它?

iOS – 本地保存图像的最佳实践 – NSCache vs保存在文档目录中

我正在开发一个类似于Instagram feed的应用程序(包含图片和一些标签的单元格的表格)。 对于从数据库中获得的所有数据,我使用的是数据任务(因为它不需要太多接收它们),但对于图像(我的url是通过数据请求获得的),我需要保存在本地以供将来使用(改善用户体验)。 我的逻辑如下:保存在NSCache或文档目录中,文件夹内的图像与他们下载的date(创build一次,并追加所有其他图像,如果需要)( 我删除每个文件夹是不是从最近的7天 ),然后对于TableView,只是从那里加载,所以tableview将滚动顺利,不会直接从其委托方法加载URL。 那么根据我的需要, NSCache或文档目录可以存放在哪里。 期待听到您的build议,谢谢!

用于存储UIImage ios的NSCache初始化

我正在使用NSCache来存储图像。 但是这里的问题是一旦我在控制器之间切换,NSCache清空。 我希望项目在那里至less在应用程序closures或用户注销。 比方说,我有一个选项卡视图,我从第一个选项卡中的数据存储的图像。 当我转到第二个选项卡并切换回第一个时,NSCache被重新初始化。 这是我的代码: – (void)viewDidLoad { [super viewDidLoad]; if(imageCache==nil) { imageCache=[[NSCache alloc]init]; NSLog(@"initialising"); } [imageCache setEvictsObjectsWithDiscardedContent:NO]; } (void) reloadMessages { [Data getClassMessagesWithClassCode:_classObject.code successBlock:^(id object) { NSMutableArray *messagesArr = [[NSMutableArray alloc] init]; for (PFObject *groupObject in object) { PFFile *file=[groupObject objectForKey:@"attachment"]; NSString *url1=file.url; NSLog(@"%@ is url to the image",url1); UIImage *image = [imageCache […]

NSCache和背景

我注意到当应用程序在后台运行时,NSCache会清除所有的对象。 这是预期的行为? 有没有办法避免它? 当应用程序进入后台时,当设备内存不足时,我希望它会驱逐对象。 你知道任何有效的select吗?

第一次加载时,NSCache不适用于所有图像

我正在swift 3.0中的一个项目woking我在哪里caching服务器的响应通过使用NSCache作为填充它们在UITableView。 然而,由于某种原因,我只看到几个图像加载时,第一次加载的应用程序,但如果如果我滚动,回来我看到的一切(检索服务器的响应结束我重新加载我的tableview,但似乎不是这种情况)。 我不知道我在这里错过了什么,代码如下,以显示如何caching图像。 let imageCache = NSCache<AnyObject, AnyObject>() var imageURLString : String? extension UIImageView { public func imageFromServerURL(urlString: String) { imageURLString = urlString if let url = URL(string: urlString) { image = nil if let imageFromCache = imageCache.object(forKey: urlString as AnyObject) as? UIImage { self.image = imageFromCache return } URLSession.shared.dataTask(with: url, completionHandler: { (data, […]

NSCache不会驱逐数据

NSCache是一个很less使用的工具,实际上看起来非常有用。 我创build了一个简单的实验,看看它是如何工作的,看起来它不会在低内存情况下自动驱逐数据(或者我做错了什么!) – (void)viewDidLoad { _testCache = [[NSCache alloc] init]; // Allocate 600 MB of zeros and save to NSCache NSMutableData* largeData = [[NSMutableData alloc] init]; [largeData setLength:1024 * 1024 * 600]; [_testCache setObject:largeData forKey:@"original_Data"]; } – (IBAction)buttonWasTapped:(id)sender { // Allocate & save to cache 300 MB each time the button is pressed NSMutableData* largeData […]