Есть ли версия NSMutableArray NSMapTable?

Я хочу сохранить mutable array слабых ссылок на группу UIViews . NSMapTable идеально подходит для этой потребности, за исключением одной детали … NSMapTable хочет ключ для каждого его значения.

Есть что-то вроде NSMapArray ? Если нет, нужно ли генерировать уникальные ключи для всех значений, которые я храню? Должен ли я использовать NSUUID для генерации имен ключей?

EDIT: Пожалуйста, не то, что я говорю о действительно слабых , самообвиняющихся ссылках. В решениях CFArrays и NSValue хранятся ссылки, которые не будут отсутствовать, когда их ссылочный объект будет освобожден … они просто окажутся в качестве указателей нежелательной почты.

3 Solutions collect form web for “Есть ли версия NSMutableArray NSMapTable?”

Вы можете попробовать NSHashTable на iOS 6, который похож на NSSet , с поддержкой слабых ссылок (и NSPointerArray тоже выглядит хорошо, но в документе говорится, что он не поддерживает слабые ссылки в ARC ).

Edit: Некоторые люди, похоже, думают, что вопреки тому, что говорит doc, NSPointerArray делает нулевые слабые ссылки в ARC. В примечаниях к выпуску Foundation OS X 10.8 сказано так, хотя документация по классу говорит об обратном (примечания к выпуску iOS не говорят). В конце концов, поэтому они добавили конструктор + weakObjectsPointerArray и параметр NSPointerFunctionsWeakMemory в OS X 10.8 и iOS 6.0 … Вы должны попробовать …

Вы сказали, что важно хранить слабые ссылки в массиве. Это возможно с использованием массивов Core Foundation. Здесь вы найдете ответ: Не сохраняющий массив для делегатов .

То, что вы говорите, противоречиво: с одной стороны, вы сказали, что хотите, чтобы они обнулили слабые ссылки, и в этом случае ваш массив будет заполнен элементами nil после их освобождения. С другой стороны, вы сказали, что хотите, чтобы он был как NSMapTable , который может удалять элементы после освобождения слабых ссылок. Что он?

Если вы хотите, чтобы он действительно обнулял слабые ссылки (которые оставят nil элементы в вашем массиве), одним из хороших решений является использование std::vector<id __weak> – вектор C ++, элементы которого обнуляют слабые ссылки. ARC будет обрабатывать все детали.

  • Метод UILabel sizeToFit работает неправильно
  • Ошибка Apple Mach-O-Linker CocoaPods
  • видео iOS 11 / xcode 9
  • Получить текущий контроллер просмотра из делегата приложения (возможно модальное)
  • Как мы можем иметь разные файлы Info.plist для разных сред, таких как Dev, Test, Staging и Prod?
  • Добавление слоя UILabel к другому уровню (отдельный UIView)
  • xcode - недопустимый биткод
  • Смените положение ближе к правой стороне правогоBarButtonItem в UINavigationBar
  • NSSet Iteration потребляет больше времени, чем NSMutableArray Iteration и NSArray Iteration потребляет больше времени, чем NSMutableArray Iteration
  • Заголовок кнопки UINavigationBar скрыт, когда заголовок заголовка слишком длинный в iOS7
  • Получите обложку альбома из песни, играющей через Apple Music
  • Interesting Posts

    Есть ли способ «подождать здесь …» в коде – как пустая петля?

    Как получить квадратные эскизы из PHImageManager?

    В ISGL3D мы можем распознавать только один жест одновременно

    iOS, составляющая 2 видео с прозрачностью

    SceneKit: как обнаружить контакт без столкновения

    Ежедневные уведомления о локальном оповещении iOS

    Как на самом деле устройство для iOS-устройства и симулятора отличается?

    Admob bannerView Request Error: нет рекламы для показа

    Метод Obj-c с нулевым возвращаемым значением, не соответствующим правильному преобразованию в быстрый

    Как экспортировать звук из временной шкалы звуков в iOS с помощью OpenAL

    Скрыть / показать iAds в Spritekit

    выноска пользовательской аннотации исчезает, когда она прослушивается

    Как получить местоположение (значение широты и долготы) в переменной на iOS?

    Xcode 6.1.1 (null) не может работать arm64

    Swift 3: Какой самый безопасный способ развернуть дополнительные значения из массива?

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