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