iPhone App在iOS 4上崩溃,在3.x上运行良好

时间:2010-08-30 15:21:31

标签: iphone ios4

我使用iPhone 3.x sdk编写了一个小应用程序。该应用程序在设备/模拟器3.x上运行良好。但是当我切换到设备/模拟器4时,当我在标签页之间导航时,它会直接退出。这是日志形式〜/ Library / Logs / CrashReporter,

异常类型: EXC_BAD_ACCESS (SIGBUS) 例外代码: KERN_PROTECTION_FAILURE 位于0x0000000000000003 Crashed Thread:0 Dispatch queue:com.apple.main-thread

特定应用信息: objc_msgSend()选择器名称:isKindOfClass: iPhone模拟器4.0(211.1),iPhone OS 4.0.2(iPhone / 8A400a)

线程0崩溃:调度队列:com.apple.main-thread 0 libobjc.A.dylib 0x02502a97 objc_msgSend + 27 1 UIKit 0x00303f20 - [UIView(内部)_didMoveFromWindow:toWindow:] + 955

你能否提前给我一些帮助。

林克卞 电子邮件/ MSN:linkou.bian@gmail.com

2 个答案:

答案 0 :(得分:3)

我写了这个blog to help understand and debug EXC_BAD_ACCESS

基本上,您正在取消引用指向未分配给进程的内存的指针。可能发生这种情况的主要原因是

  1. 您正在使用已解除分配的对象
  2. 堆已损坏
  3. 你应该做的事情来调试这个:

    1. 进行构建和分析。泄漏的报告很糟糕,但与此问题无关 - 您希望查找保留太少的问题

    2. 开启Zombies and run in the debugger。现在,您的所有对象都不会被释放,但是当它们具有保留计数0时,如果您使用它们,它们会向调试器发出警告。

    3. 博客上还有其他一些难以解释的提示

答案 1 :(得分:-1)

我开发了具有实时无线电流的VUmeter功能。它运行良好,当我遇到模拟器版本4.0但在设备(3GS,4.0)它不工作我没有得到音频级别的更新值。假设第一次方法调用我得到了价值 级别:0.001817,peakLevels:0.005463保持不变不变,而在模拟器中相同的代码运行良好。

levels[0]        = self.audioLevels[0].mAveragePower ;
peakLevels[0]    = self.audioLevels[0].mPeakPower ;   

建议或建议要求......