Ваша проблема в этих двух строках:
newValues = [[NSMutableArray alloc] initWithArray:[pickerData objectForKey:[selectorKeys objectAtIndex:component0Row]]];
currentValues = newValues;
В первой строке выделен новый экземпляр NSMutableArray.Вторая строка копирует указатель из newValues
в currentValues
, , перезаписывая значение указателя в currentValues
.Все, на что указывал currentValues
, потеряно.Это утечка.
Вы можете исправить это так:
newValues = [[NSMutableArray alloc] init...
[currentValues release];
currentValues = newValues;
Таким образом, все, на что указывал currentValues
, уменьшит счетчик ссылок, прежде чем потерять к нему доступ.
Эту проблему также можно решить, если сделать currentValues свойством Objective-C и использовать методы доступа через self.currentValues
или [self setCurrentValues:]
;эти методы будут обрабатывать сохранение / освобождение для вас.