Есть ли версия 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 будет обрабатывать все детали.

  • Каков правильный способ импорта и сохранения фотографий из iPhone Album?
  • Как сохранить тысячи объектов на Parse.com?
  • Цвет оттенка UIAlertController по умолчанию - синий.
  • WKWebView с локальным файлом
  • iOS // показать html -> богатый текст
  • Формат даты для 2016-10-20T13: 01: 47.317
  • Ошибка «_OBJC_CLASS _ $ _ AppDelegate», на которую ссылаются: «и ошибка: сработала команда компоновщика с кодом выхода 1 (используйте -v для вызова вызова)»
  • <CATransformLayer: 0x14fea3710> - изменение свойств masksToBounds в слое только для преобразования, не будет иметь эффекта
  • Продолжайте получать сообщения о предупреждении «Открыть эту страницу в YourAppName?» При попытке запустить приложение из сафари
  • Как я могу остановить отображение моментального снимка iOS при возобновлении?
  • UIScrollView, скользящий, масштабируемый
  • Interesting Posts

    Изображение программного обеспечения Xcode для iOS пользователя, чтобы символизировать вызовы iOS

    Safari не запускает события касания

    Программно изменяющиеся контроллеры просмотра без контроллера навигации Swift

    Создание градиента и возврат метода

    Невозможно изменить свойство backgroundView в UICollectionView

    Настройка параметров приложения для центра уведомлений iOS 5

    загрузить аудиозапись на ftp

    Сертификаты распространения и секретные ключи

    Можно ли запускать автоматические тесты Appium iOS на Ubuntu?

    Canvas.toDataURL не работает на мобильном устройстве iOS для Safari?

    iphone 5 – центр UIImagePickerController на экране

    Есть ли неофициальный способ получить номер телефона устройства?

    iOS: сбой приложений из-за dispatch_queue

    UITableView – Показать контроль порядка всегда, но все же можно удалять и выбирать строки

    iOS и декодирование данных MP3 / AAC из буфера памяти

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