Я сейчас работаю над приложением Судоку, числа хранятся в многомерном NSMutableArray из NSNumbers. Я сохраняю массив в моем SudokuGridView для отображения чисел в сетке. Когда приходит время решить головоломку, я передаю [grid numberGrid] подклассу созданной мной NSOperation, который решает головоломку.
Массив сетки определяется как свойство следующим образом:
@property (readonly) NSMutableArray *numberArray;
Передавая его в решатель судоку, я иду:
MESudokuSolver *solvePuzzleOperation = [[MESudokuSolver alloc] initWithPuzzle: [grid numberArray]];
initWithPuzzle определяется так:
- (id)initWithPuzzle:(NSMutableArray *)puzzleArray {
if(self = [super init]) {
puzzle = [[NSMutableArray alloc] initWithArray: puzzleArray];
}
return self;
}
Когда я затем преобразую головоломку в примитивный массив int для ее решения, а затем снова возвращаюсь в головоломку NSMutableArray. Что забавно, так это то, что теперь NSMutableArray сетки теперь имеет решение ... Это означает, что каким-то образом внутри MESudokuSolver массив сетки изменяется. Поэтому я провел некоторое исследование, указатель на массив, который передается в экземпляр MESudokuSolver, отличается от головоломки NSMutableArray MESudokuSolver. Странно, правда? Я знаю.
После ДАЛЬНЕЙШЕГО расследования указатель на номера NSN в массивах с разными указателями фактически одинаков.
Вам StackOverflow, спрашиваю, WTF?