【发布时间】:2010-08-03 02:48:40
【问题描述】:
我目前正在开发一个数独应用程序,数字存储在 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?
【问题讨论】:
标签: objective-c cocoa-touch nsmutablearray nsarray nscopying