Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone numberForPlot函数中的核心图范围问题_Iphone_Objective C_Iphone Sdk 3.0_Core Plot - Fatal编程技术网

Iphone numberForPlot函数中的核心图范围问题

Iphone numberForPlot函数中的核心图范围问题,iphone,objective-c,iphone-sdk-3.0,core-plot,Iphone,Objective C,Iphone Sdk 3.0,Core Plot,我的问题是:我今天似乎无法从numberForPlot或numberOfRecordsForPlot函数访问变量(numberForPlot见下文),但我可以从文件中的任何其他位置访问变量 viewDidLoad中的NSLog工作正常,日期设置正确。如果我从我自己的类函数中访问变量,那么这也很好,它也可以工作。但是,当我尝试从numberForPlot访问它时,我得到一个错误: 程序收到信号:“EXC\U坏访问” 在我的头文件中,我有以下内容-注意,我的类实现了CPPlotDataSource

我的问题是:我今天似乎无法从numberForPlot或numberOfRecordsForPlot函数访问变量(numberForPlot见下文),但我可以从文件中的任何其他位置访问变量

viewDidLoad中的NSLog工作正常,日期设置正确。如果我从我自己的类函数中访问变量,那么这也很好,它也可以工作。但是,当我尝试从numberForPlot访问它时,我得到一个错误:

程序收到信号:“EXC\U坏访问”

在我的头文件中,我有以下内容-注意,我的类实现了CPPlotDataSource

#import <UIKit/UIKit.h>
#import "CorePlot-CocoaTouch.h"

@interface ResultsGraphViewController : UIViewController <CPPlotDataSource> {
    NSManagedObjectContext *managedObjectContext;
    CPXYGraph *graph;
    NSMutableArray *eventsArray;
    NSDate *todaysDate;
}

@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain) NSMutableArray *eventsArray;
@property (nonatomic, retain) NSDate *todaysDate;

- (void)getEvents;
- (void)configureGraph;

@end

(在上面的最后两行中,成功输出了数组中的事件数,但最后一行导致了错误)

有没有关于为什么这是一个问题的想法,以及我该如何解决这个问题?我想这与成为CPPlotDataSource有关——这会如何影响范围界定


还是我的代码中有错误?非常感谢大家的帮助

问题在于,
[NSDate]
返回一个自动删除的对象,而您没有保留该对象。它将一直挂起,直到运行循环的当前周期结束(为什么它不会在第一个
NSLog()
语句中立即崩溃),然后它将被释放。当您尝试在
-numberForPlot:
中访问它时,它已被释放,应用程序崩溃

要解决此问题,请将-viewDidLoad中的行更改为read

self.todaysDate = [NSDate date];

您将
todaysDate
定义为具有
retain
属性的属性,因此这将保留您的日期。请记住在
-dealoc
方法中添加
[todaysDate release]
,以防止泄漏。

完美!谢谢你的修复和解释。
- (void)viewDidLoad {
    [super viewDidLoad];

    [self setTitle:@"Results"];

    todaysDate = [NSDate date];
    NSLog(@"Set today's date to %@", todaysDate);
    [self getEvents];
    [self configureGraph];
}
-(NSNumber *)numberForPlot:(CPPlot *)plot 
 field:(NSUInteger)fieldEnum 
 recordIndex:(NSUInteger)index 
{ 
NSLog(@"%d events in the array.", [eventsArray count]);
NSLog(@"today's date is %@.", todaysDate);

...

}
self.todaysDate = [NSDate date];