我开发的 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;)
}
有人对此问题有答案或建议吗?
谢谢指教