2011-10-14 64 views
5

在我的应用程序Crash Pad Drums中报告了崩溃。 它引用了某些cy音导致iPod 4崩溃的问题。一个问题。我找不到iPod touch 2上的崩溃,而且我没有iTouch 4.iPhone - 在找不到时调试崩溃

我该怎么办?

另一方面,我的应用程序今天是免费的。如果有人可以下载它并查找崩溃的情况,我会承担你的债务。

编辑: 澄清

我实际上并不能导致崩溃,因为我没有一个较新的设备上测试。我怀疑这是我现在正在研究的一个iOS 5问题,但在未来,如果我是廉价的并且不愿意购买新的iTouch,我应该怎么做?

编辑:

Console log: 
2011-10-14 23:08:25.797 Crash Pad[794:12203] -[NSConcreteValue doubleValue]: unrecognized selector sent to instance 0xec9e2e0 
2011-10-14 23:08:25.798 Crash Pad[794:12203] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteValue doubleValue]: unrecognized selector sent to instance 0xec9e2e0' 
*** First throw call stack: 
(0x1c49052 0x21fdd0a 0x1c4aced 0x1baff00 0x1bafce2 0x16f4f0 0x15d99e 0x14e0d8 0x168d42 0x15ace2 0x5c28c7 0x5c2a31 0x5c2d45 0x1be0f4a 0x1bac665 0x1bac056 0x5c2c43 0x249c8 0x24a58 0x8a72 0x1c4aec9 0x67a299 0x67a306 0x1c4aec9 0x67a299 0x67a306 0x5b6a30 0x5b6c56 0x59d384 0x590aa9 0x28c3fa9 0x1c1d1c5 0x1b82022 0x1b8090a 0x1b7fdb4 0x1b7fccb 0x28c2879 0x28c293e 0x58ea9b 0x1f0d 0x1e85) 
terminate called throwing an exceptionCurrent language: auto; currently objective-c 
+4

也许重命名应用程序?抱歉。无法抗拒... –

+1

大声笑。你确实有一点,这是一个潜在的危险名字。碰撞cy在碰撞垫上发现了一个碰撞......大声笑。 –

+0

这个问题还有什么不好? -1? –

回答

12

你发现的是苹果的错误。您可以通过动画制作任意视图来轻松地进行复制,例如:

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
anim.duration = 0.2; 
anim.repeatDuration = HUGE_VALF; 
anim.autoreverses = YES; 
anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.9, 0.9, 0.0)]; 
[view.layer addAnimation:anim forKey:@"throb"]; // if this isn't nil we crash on tap 

运行该项目。点击跳动视图。崩溃。此代码在iOS 3和iOS 4上完全正常。现在的解决方法是将forKey:设置为零,但这可能是不可接受的,因为此参数非常重要 - 非零键意味着如果稍后将另一个动画与同样的关键,这个动画被删除,这可能正是你想要做的。

我已向苹果公司提交了一个错误报告,我建议你也这样做。

编辑(2/3/12):好的,苹果说这是我的bug,不是他们的。由于我提供了转换,因此我需要使用@"transform"的密钥,而不是@"transform.scale"。此外,我的3D比例变换的z值应该是1,而不是0.

+0

请发布bug#。 – bbum

+0

@bbum - 那将是10642040.感谢您的关注! – matt

+0

这正是我所遇到的问题,自动改编CATransform和所有东西。很高兴它不只是我,但我希望我已经尝试将forKey设置为零,然后将整个事件更改为动画块。 –

4

你有一个崩溃日志或两个,你可以发布?这将有所帮助。

鉴于它正在崩溃在较新的硬件而不是旧的,它不可能是一个内存相关的问题。最有可能的是,这是一个与线程有关的时间问题;更快的设备可以尽快完成某些工作,并在其他工作完成之前触及数据结构。由于声音播放持续时间跨越不同设备,这将进一步证实这一理论。

+0

添加了崩溃的gdb输出 –

+0

@bbum - 这是iOS 5中引入的Apple错误。我提交了一个错误报告。看到我对OP问题的回答。 – matt

+0

非常好。感谢提交。 – bbum

7

在调试器中设置NSZombieEnabled,MallocStackLoggingguard malloc。然后,当你的应用程序崩溃,在gdb的控制台输入:

(gdb) info malloc-history 0x543216 

替换0x543216与导致崩溃的对象的地址,你会得到一个更加有用的堆栈跟踪,它应该帮助你查明导致问题的代码中的确切行。

0

它最终成为iOS 5的一个问题。我能够通过评论各种代码来缩小崩溃的原因。如有疑问,请发表评论。

+2

您可以扩展该答案吗?你是如何改变你的代码的?我在iOS 5中遇到了同样的问题。 – matt

+0

我认为原因很随意 - 某些东西在iOS 5中似乎有冲突 - 但我所做的是将一些CAKeyframeAnimation内容更改为动画块。 –

+1

是的,我的崩溃还涉及CAAnimation。但它在以前的系统中没有崩溃。我确实发现我可以通过使用动画块来解决它,但我不想这样做。奇怪的是,解决方案是在'addAnimation:forKey:'中使用零键。 - 感谢您的确认。 – matt