Это зависит от того, что myObject
действительно есть и как у вас есть его свойства. Предполагая, что вы определили их для выпуска, например, здесь:
@property (nonatomic, retain) SomeClass *myProperty;
то да, вы можете это сделать. Сетчатчики автоматически синтезируются для вас путем создания объекта-c и устанавливаются на ноль старых значений свойств перед сохранением и назначением новых значений.
Однако, хотя с вашей системой управления памятью проблем не возникает, все еще существует проблема с вашим кодом. Помните, что myObject
является указателем, как на C или C++. Это означает, что если вы добавите его в myDic
, а затем измените свойства объекта позже (например, на следующей итерации цикла for), эти изменения будут отражены, когда вы вытащите объект из словаря в какой-то момент будущее. То, что вы хотите что-то вроде этого:
myObject = nil
myDict = new Dictionary
for(int i; i < 10;i++)
myObject = new Object
myObject.value1 = new data from somewhere
myObject.value2 = new data from somewhere
myDic setValue:myObject forKey:i
myObject release
end for
Что это делает релиз myObject
после ввода его в словаре (все классы сбора какао сохранить любой объект, который вы положили в них и освободить объекты, когда они либо удалены, либо сама коллекция освобождается), поэтому у вас нет утечки, а также выделяйте новый экземпляр Object
на каждой итерации, чтобы вы не изменяли один и тот же объект снова и снова.
Если вы еще не читали Apple Memory Management Guide for Cocoa, я бы очень рекомендовал это сделать. Это очень информативно.
Что бы вы выпустили во время цикла? Все данные (ключи, значения и сам словарь) все еще активно используются. –