imageMArray=[[NSMutableArray alloc] initWithArray:CategoryImages];
В приведенном выше утверждении у вас есть утечка памяти.
Вместо этого вы можете сделать следующее:
imageMArray = [NSMutableArray arrayWithArray:CategoryImages];
В методе ShuffleOnlyArray возвращать автоматически освобожденный объект.
NSMutableArray *destArray1 = [[NSMutableArray alloc] initWithCapacity: [sourceArray count]] ;
return [destArray1 autorelease];
Но после того, как вы его получите, сохраните (перешли во владение) объект массива.
imageMArray=[[self shuffleOnlyArray:imageMArray] retain];
Редактировать
В методе shuffle
выполните следующие действия:
NSMutableArray *imageMArray1 = [imageMArray mutableCopy];
if( imageMArray )
{
[imageMArray release];
}
imageMArray=[[self shuffleOnlyArray:imageMArray1] retain];
[imageMArray1 release];
Редактировать 2:
Еще одно решение:
Используйте категорию для перетасовки, как указано в ссылке SO
Нет необходимости создавать новые и освобождать массивы.