Сохраняет ли 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
Протокол).