当我拖动/滚动时,Core Plot会崩溃

时间:2011-11-06 21:49:43

标签: ios core-plot

我有一个包含多个列的图表和几个覆盖的条形图。最初,这导致内存不足,即使它在Xcode乐器中仅显示2MB的使用。

现在,当我尝试拖动/滚动时,它在没有任何内存通知的情况下崩溃。

我在CPTGraphHostingView中追溯到这个方法。退出此方法后,它会崩溃。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{
    CGPoint pointOfTouch = [[[event touchesForView:self] anyObject] locationInView:self];
    if (!collapsesLayers) {
        pointOfTouch = [self.layer convertPoint:pointOfTouch toLayer:hostedGraph];
    } else {
        pointOfTouch.y = self.frame.size.height - pointOfTouch.y;
    }
    [hostedGraph pointingDeviceUpEvent:event atPoint:pointOfTouch];
}

如果我减少了条形图的数量,它会让我拖一些,但最终它会崩溃。

其他人有类似的问题吗?

顺便说一下这是最新的代码(11/5/2011)。

2 个答案:

答案 0 :(得分:0)

collapsesLayers = YES解决了这个问题 - 感谢Eric。

仅供参考这是一个显示特定月份产品数量的业务图表,这就是条形图数量如此之高的原因。如果有不同的方法,请告知。

答案 1 :(得分:0)

如果您使用单个collapsesLayers = YES制作多个图表,请不要使用CPTGraphHostingView,而是使用类似这样的内容来防止表格视图的cellForRowAtIndexPath方法中的内存崩溃问题:< / p>

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"GraphCell" forIndexPath:indexPath];
if(cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"GraphCell"];
}
for (id v in cell.contentView.subviews)
{
    if ([v isKindOfClass:[CPTGraphHostingView class]])
    {
        [v removeFromSuperview];
    }
}

self.hostView = [(CPTGraphHostingView *) [CPTGraphHostingView alloc] initWithFrame:cell.contentView.bounds];
self.hostView.allowPinchScaling = NO;
[cell.contentView addSubview:self.hostView];



/*     Configure Graph           */
// 1 - Create the graph
CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:CGRectMake(0, 0, 320, 180)];
graph.backgroundColor =[UIColor whiteColor].CGColor;
//1].CGColor;
self.hostView.hostedGraph = graph;