У меня есть приложение, которое кэширует большие изображения, чтобы пользователь не ждал 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) Я знаю, что нет способа (кроме частного / недокументированного API) узнать предупреждение об уровне памяти, в противном случае это может быть хорошим фактором для определениясколько страниц я могу кешировать.Но только для подтверждения, могу ли я использовать их каким-либо образом.
3) Сейчас я думаю о кэшировании 3-х экранов (которые имеют 6 изображений), и в случае, если мой ViewController получает предупреждение о памяти, я выгружаю все экраны, кроме видимыходин и сброс количества экранов для кэширования до 2 (4 изображения).Но я не нашел его оптимизированным, потому что либо кеширую меньше, чем возможно, либо в некоторых условиях даже загрузка 4 приводит к сбою.