我目前正在开发一个数独应用程序,这些数字存储在 NSNumbers 的多维 NSMutableArray 中。我在 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 实例的数组的指针与 MESudokuSolver 的谜题 NSMutableArray 不同。奇怪,对吧?我知道。
经过进一步调查,指向具有不同指针的数组内的 NSNumbers 的指针实际上是相同的。
对你 StackOverflow,我问,WTF?