gpt4 book ai didi

ios - 基于可用 RAM 或 iOS 内存警告级别的自适应图像缓存

转载 作者:可可西里 更新时间:2023-11-01 06:16:50 24 4
gpt4 key购买 nike

我有一个缓存大图像的应用程序,这样用户就不必等待 imageWithContentsOfFile。作为一般规则,我会缓存上一张和下一张图像。

1) 我可以根据 iPad 中的可用内存使缓存自适应吗?如果是,阈值应该是多少?下面是计算可用内存的函数

-(void) report_memory {
struct task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&info,
&size);
if( kerr == KERN_SUCCESS ) {
Log(@"Memory in use (in bytes): %u", info.resident_size);
} else {
Log(@"Error with task_info(): %s", mach_error_string(kerr));
}
}

2) 我知道没有办法(私有(private)/未记录的 API 除外)知道内存级别警告,否则它可能是确定我可以缓存多少页的一个很好的因素。但只是为了确认我能否以某种方式使用它们。

3) 现在我正在考虑缓存 3 个屏幕(有 6 个图像),如果我的 ViewController 收到内存警告,我会卸载除可见屏幕之外的所有屏幕,并将要缓存的屏幕数重置为 2(4 个图像)。但我没有发现它经过优化,因为要么我的缓存比可能的少,要么在某些情况下甚至加载 4 会导致崩溃。

最佳答案

如果您希望在不导致应用程序崩溃的情况下缓存尽可能多的数据,您可以随时使用 didReceiveMemoryWarning 函数在需要时删除多余的缓存。在此函数中,您不必清除所有内容。您可以使用它有选择地为当前情况清理足够的空间,然后继续缓存直到它再次触发此警告。

另一种方法是启动缓存例程,直到警告触发。这将允许您创建能够缓存的项目的计数。达到此计数后,您可以让缓存迭代次数远远低于该计数以避免出现问题。

不完全是深入的解释,但这些是使用可用的标准方法的一些想法,这些方法应该仍然能够实现您的目标。

关于ios - 基于可用 RAM 或 iOS 内存警告级别的自适应图像缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9757982/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com