Вы выделяете память для своей переменной readyPlayers, но затем указываете на какой-то другой сегмент памяти:
readyPlayers = [shufflePlayersFunction shufflePlayers: activePlayersArray];
readPlayer теперь автоматически выпущен. Вы потеряли дескриптор ранее выделенной памяти.
Что вам нужно сделать, это в основном:
if (readplayer!= nil){
[readplayer release];
}
readplayer = [[shufflePlayersFunction shufflePlayers: activePlayersArray] retain];
и позже ... обязательно отпустите это снова, если не ноль, когда вы закончите.
Но ... Не пытайтесь делать это !!!
Вот для чего у вас есть свойства. Сделайте readyplayer переменной экземпляра, объявите для нее свойство и используйте synthesize. Теперь измените выделение на:
[self setReadyPlayers: [NSMutableArray array]];
установить читателя по:
[self setReadyPlayers: [shufflePlayersFunction shufflePlayers: activePlayersArray]];
Не нужно беспокоиться об освобождении вашего массива в dealloc и т. Д. Позвольте операционной системе работать за вас.
Если readyPlayers на самом деле является просто временной переменной, забудьте о alloc и release и позвольте авто-релизу обработать его.
[shufflePlayersFunction shufflePlayers: activePlayersArray]
должен возвращать автоматически освобожденный массив.
NSMutableArray *readyPlayers = [shufflePlayersFunction shufflePlayers: activePlayersArray];
NSLog(@"%@", readyPlayers);
// now forget about it