NSCache и фон

Я заметил, что NSCache вытесняет весь его объект, когда приложение идет в фоновом режиме. что ожидаемое поведение? есть ли способ избежать этого?

Я ожидаю, что он выведет объекты, когда устройство закончит работу не сразу, когда приложение пойдет в фоновом режиме.

Знаете ли вы какую-либо действующую альтернативу?

Ответ 1

В моем случае это произошло, когда объекты, хранящиеся в NSCache, не соответствуют протоколу NSDiscardableContent. Когда я добавил указанный протокол, вытеснение объектов, когда приложение вводит фон, исчезает.

Кроме того, на основе источника NSCache.m я нашел здесь, объекты, которые не соответствуют протоколу NSDiscardableContent, никогда не удаляются во время выполнения даже приложение нуждается в большем объеме памяти и должно вытеснить некоторые из его элементов. Возможно, причина, по которой объекты, не относящиеся к NSDiscardableContent, вытесняются, когда приложение вводит фон, потому что это хорошее время для их удаления.

Ответ 2

Комментарии в этом связанном сообщении показывают, что NSCache очищается, когда приложение входит в фоновый режим. NSCache не выдает данные

Ответ 3

NSCache продолжает быть смешным. Я был разработчиком iOS с первого дня SDK, и только сегодня я немного отыскал это и нашел этот полезный пост.

Все эти годы я думал, что он работает как любой обычный кеш, но нет! Я никогда не буду использовать это снова.