Можно ли доверять objectForKey сразу после setObject в NSCache?

Учитывая этот пример кода (кэш – это экземпляр NSCache):

- (id)objFromCache { if ([cache objectForKey:@"myObject"] == nil) [cache setObject:[self generateObject] forKey:@"myObject"]; return [cache objectForKey:@"myObject"]; } 

Должен ли я доверять этому коду? Я имею в виду, будет objectForKey:@"myObject" когда-либо возвращает nil сразу после setObject:forKey:@"myObject" ? Если да, то я могу изменить, if на while ?

Каков наилучший способ справиться с этой ситуацией? Благодаря!

One Solution collect form web for “Можно ли доверять objectForKey сразу после setObject в NSCache?”

По крайней мере, в многопоточной среде вы не можете предположить, что NSCache возвращает объект, который вы только что вставили.

Кроме того, если первый вызов [cache objectForKey:@"myObject"] не возвращает nil , второй из возвращаемого оператора может возвращать nil .

Поэтому я буду играть в нее безопасно и напишу свой метод как

 - (id)objFromCache { id value = [cache objectForKey:@"myObject"]; if (value == nil) { value = [self generateObject]; [cache setObject:value forKey:@"myObject"]; } return value; } 
  • iOS - Лучшая практика для сохранения изображений локально - NSCache и Save in Document Directory
  • Поддерживается ли NSCache между запусками?
  • Когда я использую NSCachedURLResponse, я получил «301PermMove»,
  • NSCache для хранения изображений для UITableView In Swift
  • Обеспечьте гладкую прокрутку для Photo Grid с тысячами изображений с диска
  • Инициализация NSCache для хранения UIImage ios
  • Нужно сохранять и извлекать UIImages, используя буфер
  • NSCache опустел, когда приложение заходит в фоновый режим
  • Очистить кеш программно в iOS
  • Interesting Posts

    Xcode 7, поддержка каталогов универсального устройства каталога каталогов?

    Центрировать выравниватель в текстовом поле

    Как записывать звук в iOS?

    Как преобразовать 'void *' возврат из функции C в 'UnsafeMutableRawPointer' в Swift 3?

    Анимация UIImageView на основе обратной связи по уровню громкости

    Стретч-область изображения через opencv или opengl в iOS

    Восстановление удаленной автоматической возобновляемой подписки

    Xcode 8 / Swift 3 и установка приложений на iPhone 4 под управлением iOS 7

    UIStackView: действительно ли необходимо вызвать removeFromSuperView и removeArrangedSubview для удаления подвью?

    Уведомления SMS в iOS6

    Ошибка утверждения в UICollectionView при попытке перезагрузить данные

    Можно ли скрыть кнопку «Действие» в представлении UIDocumentInteractionController?

    Существуют ли ограничения скорости для тихих push-уведомлений в iOS 7?

    Как использовать openCV в iOS? Я просто не могу правильно импортировать фреймворк

    Срок службы URL-адреса «Аванс»?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.