问题标签 [nscache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3082 浏览

ios - NSCache 在启动之间是否持续存在?

我正在研究一种相当简单的缓存机制,目前正在使用 NSCache(出于内存管理的原因)。问题是 - 缓存是否在启动之间持续存在?对我来说似乎没有。

我将对象放入缓存中就好了,并且可以在应用程序运行没有问题时将它们从缓存中取出。但是一旦我重新启动,似乎缓存就消失了。

那么有没有办法让缓存在启动之间持续存在?如果是这样,您将如何将缓存从上一个会话重新同步到当前会话?

0 投票
1 回答
2293 浏览

objective-c - NSCache 为 UITableView 存储图像

我有一个带有表格视图的视图控制器。在表格视图的每个单元格中,我都有一个从网上获取的图像 - 但其中许多具有相同的图像。所以,我目前正在做的是将获取的图像存储在 NSCache 对象中。它是这样发生的:

imageCache 是一个实例变量,也是 avatarsFetched,crudClient 是一个 AFHTTPClient 对象。并且,在表格视图中:

self.delegateRef.hangiesCommunicator 以 imageCache 作为实例变量返回对象(这是应用程序委托的保留属性),以及顶部的两个方法。

当我滚动时,我在控制台中看到 @"Its not null",但我没有看到获取的图像,而是默认的 20x20-user-black 图像。有人知道吗,为什么会这样?我究竟做错了什么?

谢谢!

0 投票
2 回答
1441 浏览

iphone - 整个应用程序中 NSCache 的最佳使用

我想知道是否最好使用一个全局 NSCache 实例,或者为每个需要它的组件使用多个实例。

例如,我有几个视图子类,它们将内容绘制到图像中并缓存它们以避免一直重新生成它们。每个类有一个 NSCache 实例,还是整个应用程序只有 1 个集中式 NSCache 更好?

请注意,我并不是说每个对象实例一个缓存,这样做是迟缓的。我说的是每个类的一个 NSCache 实例。

0 投票
1 回答
1396 浏览

xcode - 缓存文本/字典的 NSArray 并使其在整个应用程序中可用的最佳方法?

我正在请求一个可能包含 10-100 个对象的数组,所有这些对象都是我解析为 NSDictionary 的 JSON 对象。我想缓存它并在整个应用程序中使用这些数据。NSCache 对此有用还是使用 NSUserDefaults 更好,或者实际上是在整个应用程序中持久化数据的最可接受的方式?核心数据?我是iOS新手,在这方面没有太多经验。

0 投票
0 回答
190 浏览

objective-c - 如果我删除 cache.db 或 application.db 会发生什么

我注意到所有第一个 xml 服务请求(我正在使用 sendsynchronous)都被缓存在库文件夹的 cache.db 中。

在启动应用程序之后和之前删除 cache.db 文件有什么影响?

0 投票
2 回答
1257 浏览

ios - 使用光盘中的数千张图像实现 Photo Grid 的平滑滚动

PhotoGrid每行有一张三张照片,使用UITableView.

我有一个内存缓存(使用 NSCache),它可以容纳 100 张图像,所以即使我在磁盘上有数千张图像要显示在网格中,我也会有一次在内存中最多有 100 张图像。

我所有的图像都是 4KB-20KB JPEG。

因此,使用此基础架构,当用户滚动照片网格时,图像会不断地从 NSCache 加载和卸载。正常滚动一切看起来都不错,我得到大约 55-58 fps。

当用户开始更快地来回滚动时,我有两种情况:

  1. 如果我将图像加载任务从主线程中分离出来,我最终会在照片网格上丢失图像,因为我的单元格在图像被读入内存之前显示。

    /li>
  2. 如果我在主线程上有图像加载任务,则会出现口吃。我得到大约36-45fps。

    /li>

getImageFromCacheForImagePath:imagePath如果存在,则立即从 NSCache 获取图像,如果不存在,则从文件中加载图像并设置到 NSCache 以供以后使用,但我将限制设置NSCache为 100。

我尝试/调整的事情:

  1. 避免clipsToBounds用于网格图像视图。
  2. 在后台线程上加载图像。
  3. NSOperation队列的使用。
  4. 以 100 个批量加载图像(有效,但快速滚动,图像加载时间被延迟)。

我试图达到与原生照片应用程序相同的感觉。

感谢您的建议。

0 投票
2 回答
1176 浏览

ios - NSCache - 标记对象不可移除

当用户通过菜单在视图控制器之间切换时,如果他有足够的内存,我想缓存它们。为了做到这一点,我想使用NSCache存储许多UIViewControllers.

但是,我不确定如何判断NSCache当前对象当前已被使用且不应被删除。例如,当我运行应用程序时,加载几个视图控制器并退出应用程序,NSCache自动删除所有应用程序viewControllers(这是有道理的 - 应用程序将能够在前台停留更长时间)。但是,它也会删除当前显示的视图控制器,这不是我想要的。

如何将特定对象标记为不可移除?

0 投票
1 回答
600 浏览

ios - Cache returning wrong objectForKey with NSIndexPath as key

In my cellForRowAtIndexPath method, I have this code:

When I scroll to the bottom of the tableview, each cell displays fine. Upon scrolling back up, cells display fine too. But when I begin scrolling down after scrolling up, cells begin to appear repeated.

Every NSLog search I do for index paths returns the correct value, even on repeated cells.

0 投票
1 回答
87 浏览

uitableview - 在后台渲染图像

我有一个 tableview,它有 5-6 个子视图,并不复杂,但是 imageview 在其中呈现高分辨率图像,显示在 200X174 大小的 imageview 中。图像被异步下载并缓存到磁盘。但是,当用户在 tableview 中滚动时,当滚动即将稳定下来时,滚动会出现卡顿。我希望制作自己的自定义单元格,通过覆盖 drawrect 方法使用 calayers 进行绘图。是否可以在异步背景队列中渲染这些图像,以便用户获得流畅的滚动体验?

0 投票
1 回答
5279 浏览

objective-c - 如何遍历 NSCache 键

我需要制作一个像 NSCache 这样的字典,它对于保存 cahce 是线程安全的。但是,有时,我需要刷新缓存的内容。NSCache 不提供迭代其键的方法。这里有什么替代方案?NSMutableDictionary 与同步?