我在开发的iPad App上遇到了Core Plot的问题。我的整个应用都使用ARC。
我的应用程序为9个viewControllers,在每个viewcontroller中都有一个带有2个或3个散点图的Core Plot图。
在将这些视图重复8次或9次(后退和前进)后,某些图表会消失,并且iPad的错误日志显示如下:
Sep 7 18:12:24 Mio-iPad backboardd[26] <Error>: CoreAnimation: failed to map 2263232 bytes (3) Sep 7 18:12:24 Mio-iPad backboardd[26] <Error>: CoreAnimation: missing mask layer 0x0 Sep 7 18:12:24 Mio-iPad backboardd[26] <Error>: CoreAnimation: serialization error from context 1173490153 Sep 7 18:12:24 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: failed to map 2263232 bytes (3) Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: missing mask layer 0x0 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: serialization error from context 1173490153 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506 Sep 7 18:12:25 Mio-iPad backboardd[26] <Error>: CoreAnimation: rendering error 506
在图表消失之前,我没有得到任何内存警告(didReceiveMemoryWarning)。 我也使用了分配工具,但在迭代过程中趋势不会增长。
奇怪的是: 如果我以这种方式运行应用程序: view1 - &gt; view2 - &gt; view3 - &gt; view4 - &gt; view5 - &gt; view6 - &gt; view7 图表不会消失(经过200次迭代)。
如果我以这种方式运行应用程序: view1 - &gt; view2 - &gt; view3 - &gt; view4 - &gt; view5 - &gt; view6 - &gt; view7 - &gt; view8 图表在49次迭代后消失
如果我以这种方式运行应用程序: view1 - &gt; view2 - &gt; view3 - &gt; view4 - &gt; view5 - &gt; view6 - &gt; view7 - &gt; view8 - &gt;最后的观点 图形在7次迭代后消失。
知道这一点也很有趣: view3和view6,view4和view7,view5和view8是镜面的(它们是两个只显示不同变量的相同图形的类)
这是我创建dealloc方法的方式(因为我使用的是ARC),有什么问题吗?
-(void)dealloc
{
touchPlotBall = nil; //(CPTScatterPlot)
dataSourceLinePlot= nil; //(CPTScatterPlot)
dataSourceSLinePlot = nil; //(CPTScatterPlot)
[scatterPlotViewValue removeFromSuperview]; //(CPTGraphHostingView)
scatterPlotViewValue=nil; //(CPTGraphHostingView)
[scatterPlotViewBall removeFromSuperview]; //(CPTGraphHostingView)
scatterPlotViewBall=nil; //(CPTGraphHostingView)
self.delegate = nil; //(id<view7ControllerDelegate> delegate;)
}
有没有人对这个问题有答案或建议?
感谢您的建议
答案 0 :(得分:0)
我建议只有在核心情节没有完成你的工作时才能回答我的答案。
过去我也使用核心情节,但这有点复杂。
最好有另一种解决方案。
就像你可以使用javascript,css,html和这样的支持,你可以轻松地将它作为html字符串加载到webview中。
看一下我开始使用的这个http://www.rgraph.net/,对于ios开发人员来说,只需花费更少的精力就可以使用复杂多样的图表,这将是一个福音。