Поменяйте местами последние две строки.После установки otherValuesArray
на ноль, нет смысла отправлять ему сообщение об освобождении.Это уже ноль, поэтому релиз не имеет никакого эффекта.Таким образом, вы теряете эту память, поскольку она не освобождается.Правильный код будет,
[otherValuesArray release]; // first release
otherValuesArray = nil; // then set to nil
А также stringWithFormat
уже автоматически выпущен.Таким образом, вам не нужно отправлять это сообщение авто-релиз.Вы получаете утечку из-за утечки контейнера otherValuesArray
.
А также (хотя это и не связано с утечкой), вам вообще не нужен tempString.Вы можете сделать это в одну строку:
[otherValuesArray addObject:[NSString stringWithFormat:@"%d",challengeID]];