[__NSArrayI count]:发送到解除分配的实例0x6dbfd10的消息

时间:2012-10-22 07:11:36

标签: iphone objective-c ios core-plot

我正在使用Coreplot API创建条形图。当我尝试将相同的代码作为单个项目运行时,它工作正常但是当我将它集成到UINavigationController内的项目时,它给了我一个错误。

GraphView.h

    @interface GraphView : CPTGraphHostingView <CPTPlotDataSource, CPTPlotSpaceDelegate>
   {
    CPTXYGraph *graph;
    NSArray *dates; 
   } 
  @property(nonatomic, retain) NSArray *dates;

GraphView.m

dates = [NSArray arrayWithObjects:@"2012-05-01", @"2012-05-02", @"2012-05-03", 
             @"2012-05-04", @"2012-05-05", @"2012-05-06", @"2012-05-07", @"2012-05-08", @"2012-05-09",@"2012-05-10",@"2012-05-11",@"2012-05-12",@"2012-05-13",@"2012-05-14",@"2012-05-15",@"2012-05-16",@"2012-05-17",@"2012-05-18",@"2012-05-19",@"2012-05-20",nil];


 - (NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
{
    return dates.count;
}

在返回dates.count时,它给了我错误。

  

[__ NSArrayI count]:发送到解除分配的实例0x6dbfd10的消息

2 个答案:

答案 0 :(得分:7)

您正在创建一个自动释放对象。将内存分配给日期数组。

dates =    [[NSArray alloc]initWithObjects:@"2012-05-01", @"2012-05-02", @"2012-05-03", 
                 @"2012-05-04", @"2012-05-05", @"2012-05-06", @"2012-05-07", @"2012-05-08", @"2012-05-09",@"2012-05-10",@"2012-05-11",@"2012-05-12",@"2012-05-13",@"2012-05-14",@"2012-05-15",@"2012-05-16",@"2012-05-17",@"2012-05-18",@"2012-05-19",@"2012-05-20",nil];

答案 1 :(得分:2)

删除NSArray *日期实例变量 - 这就是为什么你拥有该属性,它就是为你做的。

然后使用属性setter:

self.dates = [NSArray arrayWithObjects:@"2012-05-01", @"2012-05-02", @"2012-05-03", 
             @"2012-05-04", @"2012-05-05", @"2012-05-06", @"2012-05-07", @"2012-05-08", @"2012-05-09",@"2012-05-10",@"2012-05-11",@"2012-05-12",@"2012-05-13",@"2012-05-14",@"2012-05-15",@"2012-05-16",@"2012-05-17",@"2012-05-18",@"2012-05-19",@"2012-05-20",nil];