Как понять, какое свойство подходит для NSDictionary, например.сохранить или назначить? - PullRequest
1 голос
/ 24 января 2011

теперь я использую

@property (nonatomic, retain) NSDictionary *currentAttribute;

если я использую копирование или назначение вместо сохранения, будет ли больше разница в производительности памяти?

1 Ответ

7 голосов
/ 24 января 2011

Объявление его copy будет означать, что вы получите совершенно новый объект NSDictionary для использования с вашим классом. Если это довольно большой словарь, это может быть удар по производительности; не очень заметно, но в любом случае значимо. Используя retain, вы просто указываете своему классу собственный указатель на тот же экземпляр NSDictionary.

Объявляя это assign подвергает ваше приложение риску сбоя в случае автоматического выпуска NSDictionary. Если он попадает в пул и освобождается из-за того, что пул уменьшил количество сохраняемых данных до 0, ваш класс больше не сможет получить к нему доступ, что приведет к падению.

...