NSCache и фон
Я заметил, что NSCache вытесняет весь его объект, когда приложение идет в фоновом режиме. что ожидаемое поведение? есть ли способ избежать этого?
Я ожидаю, что он выведет объекты, когда устройство закончит работу не сразу, когда приложение пойдет в фоновом режиме.
Знаете ли вы какую-либо действующую альтернативу?
Ответы
Ответ 1
В моем случае это произошло, когда объекты, хранящиеся в NSCache, не соответствуют протоколу NSDiscardableContent. Когда я добавил указанный протокол, вытеснение объектов, когда приложение вводит фон, исчезает.
Кроме того, на основе источника NSCache.m я нашел здесь, объекты, которые не соответствуют протоколу NSDiscardableContent, никогда не удаляются во время выполнения даже приложение нуждается в большем объеме памяти и должно вытеснить некоторые из его элементов. Возможно, причина, по которой объекты, не относящиеся к NSDiscardableContent, вытесняются, когда приложение вводит фон, потому что это хорошее время для их удаления.
Ответ 2
Комментарии в этом связанном сообщении показывают, что NSCache очищается, когда приложение входит в фоновый режим. NSCache не выдает данные
Ответ 3
NSCache продолжает быть смешным. Я был разработчиком iOS с первого дня SDK, и только сегодня я немного отыскал это и нашел этот полезный пост.
Все эти годы я думал, что он работает как любой обычный кеш, но нет! Я никогда не буду использовать это снова.