2013-04-16 47 views
0

我是一个名为CountdownCenter的cydia调整器的开发者。我试图为我的小部件创建一个数字时钟外观,所以我创建了一个完美的示例应用程序。做完这些之后,我将这些数据转移到我的调整代码中,但是这导致我的iPhone上出现SIGSEGV崩溃。经过一些测试后,我发现了导致崩溃的部分,但我无法找到问题所在,因为这部分可以在普通应用上运行。你能帮我吗?SIGSEGV错误发生在实际设备上,但不是在ios模拟器上

下面是代码:

int digitarray[10]; 
    int c = 0; 
    digitarray[0] = 0; 
    digitarray[1] = 0; 
    while (secon>0) { 
     int digitt = secon % 10; 
     digitarray[c] = digitt; 
     secon /= 10; 
     c++; 
    } 
     lbl.text = [NSString stringWithFormat:@"%d", digitarray[0]]; 
      [self selectimage:digitarray[0] img:numview10]; 

回答

0

SIGSEGV通常意味着,你试图访问内存时,你是不是允许访问。 (顺便说一句,你测试这与发布版本?)也许f.e.这里(还有其他一些类似的地方太):

c = 0; 
while (secon>0) { 
    int digitt = secon % 10; 
    digitarray[c] = digitt; 
    secon /= 10; 
    c++; 
} 

有一些可能性:

  • secon(可怕的变量BTW名...)是floatdouble,在这种情况下,while loop要么从未进入过或从未离开过
  • c则为如此之大,超出了的界

为了解决这个问题,我建议只在你的代码开始时提供一个断点并逐步检查它。

+0

嘿,谢谢,结果你说得对,有一个以上的错误,但最重要的是它写出了界限。现在,你能再次帮助我吗?每次secon从0到9再次发生一次SIGABRT错误(该数字从60到0每秒减少1次,但是每次遇到一组新的10个数字时,它都会因为SIGABRT而崩溃,为什么?我将为您编辑看到更新的代码,我在标签中看到的文本是正确的,这就是为什么整个事情有点奇怪...... – isklikas

+0

(c和数组在方法中初始化,因为他们没有实际上需要像原始代码一样是全球性的) – isklikas

相关问题