Ваша первая утечка вызвана тем, что вы звоните:
[sortedDummyArray retain];
Вы уже вызвали alloc, который делает это, но в конце концов, вы только что освободили его (так что удалить вышеуказанную строку) Затем вы также переназначаете ее, что неверно.
Ваша вторая утечка вызвана тем, что вы установили finalArray с alloc, а затем заменили его результатамифункции.Вы можете исправить это, заменив эту строку:
NSMutableArray *finalArray = [[NSMutableArray alloc]initWithArray:sortedDummyArray];
На эту:
NSMutableArray *finalArray = [NSMutableArray arrayWithArray:sortedDummyArray];
А затем удалив эту строку:
[finalArray release];
Итак, в целом ваша функция будет выглядеть так:
- (void)viewDidDisappear:(BOOL)animated {
// Empty array to be sure it is empty
[playerArray removeAllObjects];
//============CLEAN OUT DOUBLE NAMES FROM ARRAY==============//
// Sort the array
NSArray *sortedDummyArray = [selectedPlayersArray sortedArrayUsingSelector:@selector(compare:)];
NSMutableArray *finalArray = [NSMutableArray arrayWithArray:sortedDummyArray];
int xx = [sortedDummyArray count];
int yy;
int counter = 0;
int rr = 0;
for (int oo = 0; oo < xx; oo++) {
yy = [finalArray count];
for (int zz = 0; zz < yy; zz++) {
// If hit, clean out the double name
if ([[sortedDummyArray objectAtIndex:oo] isEqualToString:[finalArray objectAtIndex:rr]]) {
counter++;
// Check if there is more than one of this name
if (counter > 1) {
[finalArray removeObjectAtIndex:rr];
rr--;
counter--;
}
}
rr++;
}
counter = 0;
rr = 0;
}
// Save who is in the game
AccessQuestionsDB *shufflePlayersFunction = [AccessQuestionsDB new];
finalArray = [shufflePlayersFunction shufflePlayers: finalArray];
[shufflePlayersFunction release];
TempPlayersInTheGame *savePlayersInTheGame = [TempPlayersInTheGame new];
[savePlayersInTheGame saveSelectedPlayers:finalArray];
[savePlayersInTheGame release];
[super viewDidDisappear:animated];
}
Но все это излишне только для удаления дублирующихся записей,преобразование вашего массива в NSSet (который всегда уникален), а затем преобразование его обратно в NSArray должно позаботиться об этом за вас, поэтому ваша функция должна быть :
- (void)viewDidDisappear:(BOOL)animated {
// Empty array to be sure it is empty
[playerArray removeAllObjects];
//============CLEAN OUT DOUBLE NAMES FROM ARRAY==============//
NSSet *uniquePlayers = [NSSet setWithArray:selectedPlayersArray];
// Save who is in the game
AccessQuestionsDB *shufflePlayersFunction = [AccessQuestionsDB new];
NSArray *finalArray = [shufflePlayersFunction shufflePlayers: [uniquePlayers allObjects]];
[shufflePlayersFunction release];
TempPlayersInTheGame *savePlayersInTheGame = [TempPlayersInTheGame new];
[savePlayersInTheGame saveSelectedPlayers:finalArray];
[savePlayersInTheGame release];
[super viewDidDisappear:animated];
}