gpt4 book ai didi

ios - 简单的CoreGraphics绘图偶尔会崩溃,但仅在iOS 7上会崩溃

转载 作者:行者123 更新时间:2023-12-01 16:47:22 25 4
gpt4 key购买 nike

我有一段代码可以绘制曲线,并且已经在应用程序中运行了至少一年而没有任何问题。在过去的三天内,我突然每天收到大约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推出后的头两天没有崩溃报告,但此后持续不断。

最佳答案

不要使用CGContextMoveToPointCGContextAddLineToPoint
使用CGPathMoveToPointCGPathAddLineToPoint方法来处理strokePath。在您的情况下:

CGMutablePathRef path= CGPathCreateMutable();
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);
}

CGContextAddPath(cctx, path);
CGContextClosePath(cctx);
CGContextFillPath(cctx);

关于ios - 简单的CoreGraphics绘图偶尔会崩溃,但仅在iOS 7上会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18955360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com