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