Я унаследовал некоторый код, и он выглядит так:
- (bool)makeOneLevel:(int)nummines objects:(int)numobjects
{
[field release];
state = gameWait;
field = [[MineField alloc] createLevel:nummines objects:numobjects];
if([field rating] == -1)
{
return false;
}
...
Всегда выделяется один MineField.Всякий раз, когда вы создаете новое поле, функция, в первую очередь, освобождает старое.Если функция преуспевает в создании MineField, то она возвращает true.
У меня также есть это:
while(numsaved < self.makeNumber)
{
while(![mineView makeOneLevel:self.makeNumMines objects:self.makeNumObjects])
{
}
{
//saving code here
}
numsaved++;
}
, которая вызывает функцию, пока не создаст действительное MineField.Это все работает.Но при этом он выделяет ГБ ОЗУ.Но инструмент «Утечки» не обнаруживает утечек, и когда внешнее время завершается, и ОС возвращает контроль, вся эта оперативная память освобождается очень хорошо.
Я делаю что-то не так с распределением MineField, или я должен искатьв другом месте в процессе создания?