gpt4 book ai didi

cocoa - CorePlot 中的 CPTScatterPlotDelegate 崩溃

转载 作者:行者123 更新时间:2023-12-03 17:48:16 26 4
gpt4 key购买 nike

我试图在一个图中覆盖多个图表,但在 CPTcatterPlot.m 类下面的 CPTcatterPlotDelegate 上出现崩溃(EXC_BAD_ACCESS)

-(void)renderAsVectorInContext:(nonnull CGContextRef)context {
...
// Draw line
if ( theLineStyle ) {
CGPathRef dataLinePath = [self newDataLinePathForViewPoints:viewPoints indexRange:viewIndexRange baselineYValue:CPTNAN];

// Give the delegate a chance to prepare for the drawing.
id<CPTScatterPlotDelegate> theDelegate = self.delegate;
....
}
...
}

与 CPTPlot.m 类中的 CPTLegendDelegate 相同

-(void)drawSwatchForLegend:(nonnull CPTLegend *)legend atIndex:(NSUInteger)idx inRect:(CGRect)rect inContext:(nonnull CGContextRef)context
{
id<CPTLegendDelegate> theDelegate = (id<CPTLegendDelegate>)self.delegate;
...
}

我使用的是CorePlot 2.1,并且我修改了examples/CorePlotGallery中文件SimpleScatterPlot.m中的renderInGraphHostingView,如下所示:

-(void)renderInGraphHostingView:(nonnull CPTGraphHostingView *)hostingView withTheme:(nullable CPTTheme *)theme animated:(BOOL)animated {
...
static CPTGraph *graph = nil;
if( initialize ) {
graph = [[CPTXYGraph alloc] initWithFrame:bounds];
...
}
[self addGraph:graph toHostingView:hostingView];
theme = [CPTTheme themeNamed:kCPTDarkGradientTheme];
...
}

因此,每次我想绘制新的数据线时,我都会使用相同的图表。

问题是随机的,有时当我绘制第二条线时程序崩溃,有时在第三条线时程序崩溃,但它对于第一张图总是工作正常。这也取决于编译。有任何想法吗?提前致谢

最佳答案

delegate 属性保存对委托(delegate)对象的弱引用。确保委托(delegate)不会在图形更新之间被释放。

关于cocoa - CorePlot 中的 CPTScatterPlotDelegate 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41447696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com