Сохраняет ли NSMutableDictionary строгую ссылку на объект, который я помещаю в него через setValue:forKey:?

Согласно документации Apple, если я добавлю объект в NSMutableDictionary через setObject:forKey: метод, словарь будет держать сильную ссылку на него.

Но как насчет setValue:forKey: метод? В документации ничего не говорится о типе ссылки на объект, добавленный этим методом. Это так же, как другой? Сохраняет ли словарь сильную ссылку на объект, добавленный с помощью этого метода?

2 ответа

Решение

NSMutableDictionary (а также NSMutableArray) сохраняет сильные ссылки на любой добавленный объект, независимо от того, как он добавлен.

NSMutableArray а также NSArray держите сильные ссылки на объекты, которые они содержат. Эти объекты либо добавляются с использованием литерального конструктора @[myObject, myObject2, ...]инициализаторы NSArrayили методы добавления / вставки NSMutableArray,

Если вы ищете хранилище ключей / значений, например карту, вы хотите использовать NSDictionary/NSMutableDictionary вместо. setValue:forKey: метод, о котором вы говорите, - это соответствие код-значение, которое отличается.

Дополнительно, NSDictionary а также NSMutableDictionary сохраняйте строгие ссылки на объекты-значения и сохраняйте копии ссылок на ключи (которые должны соответствовать NSCopying Протокол).

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