NSCache и фон

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

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

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

2 ответа

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

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

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

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

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

Другие вопросы по тегам