【发布时间】:2011-01-22 12:33:35
【问题描述】:
我已经创建了一个应用程序来解决数独网格...但是 这是我的问题:我的应用程序有一些错误,甚至在我的分发配置编译时崩溃(相当于发布配置)。
这是它的错误代码:
- (int*)completeNb:(int[9][9])aMatrix {
int n, nb;
int cell[2];
int *pcell;
BOOL found = FALSE;
BOOL pos = FALSE;
for (int k = 1; k <= 9; k++) {
n = 0;
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (aMatrix[i][j] == k)
n++;
}
}
if (n == 8) {
found = TRUE;
nb = k;
break;
}
}
if (found) {
for (int l = 0; l < 9; l++) {
for (int m = 0; m < 9; m++) {
if ([self isPossibleValue:aMatrix value:nb line:l column:m]) {
cell[0] = l;
cell[1] = m;
pos = TRUE;
break;
}
}
if (pos)
break;
}
pcell = cell;
}
else {
pcell = nil;
}
return pcell;
}
我有一个特殊的数独网格,我应该在其中找到 {6,6} 作为数字 6 的正确位置(6 应该在 i=6 和 j=6在网格中)。它在调试配置中完美运行,但使用 Distrib Conf,似乎我对 l 和 m vars 有问题 -> 循环在 l= 处中断得很好6 和 m=6 (因此,isPossibleValue 函数似乎运行良好),但是我的 cell 变量等于 { 1;0},而不是 {6;6}!
我正在将这种过程(返回一个cell[2])与许多其他功能一起使用,并且我对 Distrib Conf 没有任何问题。
我的第二个问题 - 这个问题导致应用程序崩溃 - 是使用以下代码(再次,完美地使用调试配置)。
- (void)solver:(int[9][9])aMatrix {
if (!Termine) {
int *emptyCell = [self firstEmptyCell:aMatrix];
if (emptyCell != nil) {
int i = emptyCell[0];
int j = emptyCell[1];
for (int k = 1; k <= 9; k++) {
if ([self isPossibleValue:aMatrix value:k line:i column:j]) {
aMatrix[i][j] = k;
[self solver:aMatrix];
aMatrix[i][j] = 0;
}
}
}
else {
if (!Termine) {
Termine = TRUE;
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
res[i][j] = aMatrix[i][j];
}
}
}
}
注意:一种解决方案——我不确定这是最好的——将优化级别从“最快、最小”更改为“无”。
感谢您的帮助!
【问题讨论】:
标签: iphone xcode release distribution