Диаграмма вылетает приложение, когда я делаю это из другого класса
Прежде всего, мой английский не самый лучший, но я постараюсь объяснить ситуацию как можно лучше…
я пытаюсь создать диаграмму временного ряда из другого класса, и она работает, но когда я пытаюсь взаимодействовать с диаграммой (нажмите на диаграмму), она вылетает из моего приложения, и мне приходится останавливаться и запускать ее снова...
Итак, на TimeSeriesChart.h
файл у меня есть это...
#import <UIKit/UIKit.h>
#import <ShinobiCharts/ShinobiCharts.h>
@interface TimeSeriesChart : UIViewController {
id <SChartDelegate> delegate;
id <SChartDatasource> dataSource;
}
@property (nonatomic, retain) NSMutableArray *data;
@property (nonatomic, retain) NSString *chartTitle;
@end
И на TimeSeriesChart.m
файл у меня есть следующий код...
Внутри viewDidLoad ()
Метод, который я объявил ShinobiChart, и он получит NSMutableArray
называемые данные, которые будут содержать точки данных, чтобы сделать диаграмму и NSString
называется chartTitle, который будет названием диаграммы.
CGFloat margin = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? 1.0 : 1.0;
sChart = [[ShinobiChart alloc] initWithFrame:CGRectInset(self.view.bounds, margin, margin)];
sChart.title = chartTitle;
sChart.autoresizingMask = ~UIViewAutoresizingNone;
sChart.crosshair = SChartCrosshairModeSingleSeries;
SChartDateTimeAxis *xAxis = [[SChartDateTimeAxis alloc] init];
xAxis.title = @"Fecha";
sChart.xAxis = xAxis;
SChartNumberAxis *yAxis = [[SChartNumberAxis alloc] init];
yAxis.title = @"Pesos";
sChart.yAxis = yAxis;
xAxis.enableGesturePanning = YES;
xAxis.enableGestureZooming = YES;
yAxis.enableGesturePanning = YES;
yAxis.enableGestureZooming = YES;
[self.view addSubview:sChart];
sChart.datasource = self;
кроме того, он имеет следующие методы с кодом для создания диаграммы...
-(NSInteger)numberOfSeriesInSChart:(ShinobiChart *)chart {
return 1;
}
-(SChartSeries *)sChart:(ShinobiChart *)chart seriesAtIndex:(NSInteger)index {
SChartLineSeries *lineSeries = [SChartLineSeries new];
lineSeries.selectionMode = SChartSelectionPoint;
SChartLineSeriesStyle *style = [SChartLineSeriesStyle new];
style.lineColor = [UIColor colorWithRed:31.0/255.0 green:66.0/255.0 blue:255.0/255.0 alpha:1.0];
style.lineWidth = @3;
style.pointStyle = [SChartPointStyle new];
style.pointStyle.showPoints = YES;
style.pointStyle.color = [UIColor colorWithRed:255.0/255.0 green:59.0/255.0 blue:48.0/255.0 alpha:1.0];
style.pointStyle.radius = @(10);
style.pointStyle.innerColor = [UIColor colorWithRed:31.0/255.0 green:66.0/255.0 blue:255.0/255.0 alpha:1.0];
style.pointStyle.innerRadius = @(3);
style.selectedPointStyle = [SChartPointStyle new];
style.selectedPointStyle.showPoints = YES;
style.selectedPointStyle.color = [UIColor colorWithRed:255.0/255.0 green:59.0/255.0 blue:48.0/255.0 alpha:1.0];
style.selectedPointStyle.radius = @(15);
style.selectedPointStyle.innerColor = [UIColor colorWithRed:31.0/255.0 green:66.0/255.0 blue:255.0/255.0 alpha:1.0];
style.selectedPointStyle.innerRadius = @(10);
[lineSeries setStyle:style];
return lineSeries;
}
-(NSInteger)sChart:(ShinobiChart *)chart numberOfDataPointsForSeriesAtIndex:(NSInteger)seriesIndex {
return data.count;
}
-(id<SChartData>)sChart:(ShinobiChart *)chart dataPointAtIndex:(NSInteger)dataIndex forSeriesAtIndex:(NSInteger)seriesIndex {
return data[dataIndex];
}
Итак, когда я пытаюсь создать диаграмму в другом классе, я объявляю объект типа TimeSeries и устанавливаю данные и chartTitle, который создает диаграмму, но проблема в том, что когда я пытаюсь нажать на диаграмму, происходит сбой приложения, и я надо остановить симулятор и запустить его снова…
TimeSeriesChart *tSChart = [[TimeSeriesChart alloc] initWithNibName:@"TimeSeriesChart" bundle:nil];
[tSChart setData:arrayWithData];
[tSChart setChartTitle:@“Time Series Chart“];
[viewChart addSubview:[tSChart view]];
Я надеюсь, что это понятно, и вы могли бы помочь мне решить эту проблему, спасибо!
РЕДАКТИРОВАТЬ:
В конце концов, это не было ошибкой ShinobiChart, проблема заключалась в том, что, когда я создавал диаграмму, после выполнения метода приложение потеряло ссылку на объект, который содержал диаграмму, поэтому, когда я захотел нажать на диаграмму, он вернул EXC_BAD_ACCESS
ошибка, потому что не было ссылки на объект, потому что он уже был освобожден.