Objective C调试没有采取适当的步骤

时间:2010-11-28 04:36:40

标签: objective-c

我是Objective C的新手。详细信息我正在阅读过去三天的目标c。下面提到的方法是根据Sera of Erastosthenes算法生成素数直到特定的数字。我正在尝试调试程序,但是当代码到达行时

“if(product> size)”

下一步将立即将其带到

“for(j = 2; j <= size; j ++)”

我不知道调试出了什么问题。当产品大于大小时进入中断。但是当条件为假(产品&gt;大小)时,为什么不进入下一个if

的条件

if(array [product-1]!= 1)

我是否需要重新编译代码。我正在使用xcode来调试mac os X 10.x上的代码


@interface SeiveofErastosthenes:NSObject {

int* array;
int size;

}

- (SeiveofErastosthenes *)initMe:(int)ssize; - (void)calculatePrimeNumbers; - (void)print;

@end

- (void)calculatePrimeNumbers {     int product = 0;     int i = 0;     int j;

memset(array,0,size);
array[0]=0;
array[1]=2;

for(i = 1 ; i < size ; i++)
{
    if(array[i] == 1)
        continue;

    array[i] = i+1;

    for(j = 2; j <= size ; j++ )
    {

        product = (i+1) * j;

        if(product  > size)
        {
            break;
        }

        if(array[product-1] != 1)
        {
            array[product] == 1;
        }
    }
}

}

3 个答案:

答案 0 :(得分:0)

确保在Xcode偏好设置中取消选中“懒惰加载符号” - &gt;调试。它有时会造成严重破坏。

答案 1 :(得分:0)

Xcode项目默认设置为-Os优化(优化速度和空间),对于两者调试和发布版本,奇怪。这种优化将使调试变得困难,因为代码可能会因性能而重新排序。检查“调试”配置的项目和目标设置,并确保Optimization Level设置为“无”。

答案 2 :(得分:-1)

好的,我找出了问题所在 Objective C调试器很糟糕

在我的程序中

if(array [product-1]!= 1) {

 array[product] == 1;

}

如果根据它没有必要,它不会执行语句

“array [product] == 1;”根据算法这是错误的,但它仍然是一个有效的代码

根据c,这是一个有效的语句,它应该执行它,返回的值是布尔值true或false。目标C只是忽略它并进入下一个循环。它是如此智能,甚至不检查条件if(array [product]!= 1)