1

我开发的 iPad 应用程序上的 Core Plot 有问题。我的整个应用程序都使用 ARC。

我的应用程序作为 9 个视图控制器,在每个视图控制器中都有一个带有 2 个或 3 个散点图的核心绘图图。

在将这些视图迭代 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 --> view2 --> view3 --> view4 --> view5 --> view6 --> view7 图形不会消失(经过 200 次迭代)。

如果我以这种方式运行应用程序: view1 --> view2 --> view3 --> view4 --> view5 --> view6 --> view7 --> view8 图形在 49 次迭代后消失

如果我以这种方式运行应用程序:view1 --> view2 --> view3 --> view4 --> view5 --> view6 --> view7 --> view8 --> last view 图形在 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;)

}

有人对此问题有答案或建议吗?

谢谢指教

4

1 回答 1

0

我建议仅当您的工作不是由核心情节完成时才遵循我的回答。

过去我也使用核心情节,但它有点复杂。

最好有替代解决方案。

就像您可以使用 javascript、css、html 一样,有了这样的支持,您可以轻松地将其作为 html 字符串加载到 webview 中,而且工作量非常小。

看看我开始使用的http://www.rgraph.net/,这对于 ios 开发人员来说是一个福音,可以轻松使用复杂多样的图表。

于 2013-09-08T04:01:59.197 回答