我有一段绘制曲线的代码,并且已经在应用程序中使用了至少一年,没有任何问题。在过去的三天里,我突然每天收到大约 10 个崩溃报告,全部来自 iOS 7 用户。报告说“for(int i = 1 etc”行崩溃,但我无法开始理解问题所在。崩溃日志指的是CoreGraphics,所以它可能是导致问题之前的行。这里是编码:
CGContextBeginPath(cctx);
int step=220/lookupCount;
acx = 0;
acy = hf*100-bestResults[0]*hf*100/top;
CGContextMoveToPoint(cctx, acx, acy);
for(int i=1;i<lookupCount;i++){ //line 2005
acx = hf*i*step;
acy = hf*100-bestResults[i]*hf*100/top;
CGContextAddLineToPoint(cctx, acx , acy);
}
CGContextStrokePath(cctx);
还有一段崩溃日志:
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x395311fc ___pthread_kill + 8
1 libsystem_c.dylib 0x394e202d _abort + 77
2 libsystem_c.dylib 0x394c1c6b ___assert_rtn + 183
3 CoreGraphics 0x2ed0da09 CG::Path::is_empty() const + 1
4 racquetTune 0x000942d5 -[tension autoCorr] (tension.m:2005)
我一直试图通过将不同的变量设置为零或使它们无限,但任何“成功”来重新创建崩溃。有谁知道 iOS7 中 CoreGraphics 的变化可能导致这种情况?
崩溃来自不同类型的硬件并代表少数用户,但仍然过于频繁而无法忽视。一个有趣的细节是,在 iOS 7 可用的前两天没有崩溃报告,但在那之后却源源不断。