Сбой Core-Plot только в конфигурации выпуска

Я действительно не знаю решения или даже идеи, чтобы обойти следующий сбой. Это происходит только в конфигурации выпуска на устройстве — симулятор и конфигурация отладки работают нормально. Он также появляется только при втором запуске. Поэтому, если у меня есть телефон, подключенный к моему Mac, я создаю приложение и запускаю его, все работает нормально. Если я затем закрою приложение и перезапущу его, оно вылетит. После долгих поисков кажется, что ошибка исходит из следующей строки:

x.majorIntervalLength = CPDecimalFromFloat(2.0f); 

Код перед:

               CPLayerHostingView *chartView = [[CPLayerHostingView 
alloc] initWithFrame:CGRectMake(0, 0, 320, 160)]; 
                [self addSubview:chartView]; 
                // create an CPXYGraph and host it inside the view 
                CPTheme *theme = [CPTheme themeNamed:kCPPlainWhiteTheme]; 
                CPXYGraph *graph = (CPXYGraph *)[theme newGraph]; 
                chartView.hostedLayer = graph; 
                graph.paddingLeft = 20.0; 
                graph.paddingTop = 10.0; 
                graph.paddingRight = 10.0; 
                graph.paddingBottom = 20.0; 
                CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace; 
                plotSpace.xRange = [CPPlotRange 
plotRangeWithLocation:CPDecimalFromFloat(0) 
                                                                                                           length:CPDecimalFromFloat(100)]; 
                plotSpace.yRange = [CPPlotRange 
plotRangeWithLocation:CPDecimalFromFloat(0) 
                                                                                                           length:CPDecimalFromFloat(10)]; 
                CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet; 
                CPXYAxis *x = axisSet.xAxis; 
                x.majorIntervalLength = CPDecimalFromFloat(2.0f); 

Если я прокомментирую последнюю строку, все работает нормально (конечно, длина интервала неверна). Буду признателен за любую помощь! Заранее спасибо!


person denbec    schedule 03.06.2010    source источник
comment
Как это происходит? Выдает ли он исключение или аварийно завершает работу при EXC_BAD_ACCESS? Можете ли вы начать с точек останова и посмотреть, где она остановится в функции CPDecimalFromFloat()?   -  person Brad Larson    schedule 04.06.2010


Ответы (1)


Есть шанс, что CPXYAxis *x = axisSet.xAxis; - это x, который равен nil или не сохранен? Его не проверяют.

person Adam Eberbach    schedule 03.06.2010
comment
хм, к сожалению нет. Я проверил это сейчас, и это правильный объект с правильными значениями. - person denbec; 04.06.2010