【发布时间】:2014-03-20 17:28:45
【问题描述】:
我一直在探索 Core Plot 版本 1.5.1 提供的 Plot_Gallery-iOS 项目,特别是 RealTimePlot 示例。我在 iPhone 和 iPad 的模拟器中测试了该应用程序,也在这些模拟器的 64 位版本上进行了测试。然后我在 iPhone 上运行了这个项目,一切都按预期进行。当我在 iPad Air 上运行项目时出现了问题。实时情节的第一部分工作正常,但随后情节的范围没有更新。但是,数据正在更新,因为点已移动,直到轴为空。
我在项目中添加了一个异常断点,它在CPTXYPlotSpace.m的方法setXRange:中停止在NSParameterAssert(range):
-(void)setXRange:(CPTPlotRange *)range
{
NSParameterAssert(range);
if ( ![range isEqualToRange:xRange] ) {
CPTPlotRange *constrainedRange;
if ( self.allowsMomentumX ) {
constrainedRange = range;
}
else {
constrainedRange = [self constrainRange:range toGlobalRange:self.globalXRange];
}
id<CPTPlotSpaceDelegate> theDelegate = self.delegate;
if ( [theDelegate respondsToSelector:@selector(plotSpace:willChangePlotRangeTo:forCoordinate:)] ) {
constrainedRange = [theDelegate plotSpace:self willChangePlotRangeTo:constrainedRange forCoordinate:CPTCoordinateX];
}
if ( ![constrainedRange isEqualToRange:xRange] ) {
[xRange release];
xRange = [constrainedRange copy];
[[NSNotificationCenter defaultCenter] postNotificationName:CPTPlotSpaceCoordinateMappingDidChangeNotification
object:self];
if ( [theDelegate respondsToSelector:@selector(plotSpace:didChangePlotRangeForCoordinate:)] ) {
[theDelegate plotSpace:self didChangePlotRangeForCoordinate:CPTCoordinateX];
}
CPTGraph *theGraph = self.graph;
if ( theGraph ) {
[[NSNotificationCenter defaultCenter] postNotificationName:CPTGraphNeedsRedrawNotification
object:theGraph];
}
}
}
}
部署目标是7.1,其他项目配置是项目自带的。关于为什么会发生这种情况的任何线索?
更新 这是异常之前的堆栈跟踪:
2014-03-21 15:11:48.794 Plot Gallery[209:60b] Stack trace : (
0 Plot Gallery 0x0000000100150094 -[CPTXYPlotSpace setXRange:] + 56
1 Plot Gallery 0x00000001001a705c -[CPTAnimation update:] + 3040
2 Foundation 0x000000018a2c15c4 __NSFireTimer + 92
3 CoreFoundation 0x00000001896fef54 <redacted> + 28
4 CoreFoundation 0x00000001896febc4 <redacted> + 804
5 CoreFoundation 0x00000001896fc8ec <redacted> + 1324
6 CoreFoundation 0x000000018963d6d0 CFRunLoopRunSpecific + 452
7 GraphicsServices 0x000000018f2c9c0c GSEventRunModal + 168
8 UIKit 0x000000018c76efdc UIApplicationMain + 1156
9 Plot Gallery 0x00000001000def54 main + 56
10 libdyld.dylib 0x00000001965e7aa0 <redacted> + 4
)
2014-03-21 15:12:02.358 Plot Gallery[209:60b] *** Assertion failure in -[CPTXYPlotSpace setXRange:], /Users/myUser/Developer/iOS/core_plot/framework/Source/CPTXYPlotSpace.m:378
【问题讨论】:
-
异常后能贴出堆栈跟踪吗?
-
嗨,Eric,我更新了问题,现在它包括堆栈跟踪。感谢您的帮助
-
这显然是一个动画问题。我不确定为什么它只会在某些设备上发生。如果你不明白,请在 Github 上报告错误issue tracker。
-
你能告诉我从哪里开始吗?这个bug不容易追踪……
-
您能从Github 签出最新的代码并试一试吗?在 1.5.1 发布后,我将 release-2.0 分支合并到 master 中。这将动画代码更改为使用 GCD 而不是计时器。如果新的动画代码仍然存在这个问题,请告诉我。
标签: ios graph plot real-time core-plot