//h file
struct runSTRUCT{
NSDate *RunDateTime;
} ;
//m file
struct runSTRUCT run;
- (void)viewDidLoad {
[super viewDidLoad];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeStyle = NSDateFormatterNoStyle;
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"];
run.RunDateTime = [dateFormatter dateFromString:@"12/02/2012 12:22"];
NSString *dateTimeStr = [dateFormatter stringFromDate:run.RunDateTime];
[dateFormatter release];
}
一切正常。然后,当我单击一个按钮并从日期创建一个字符串时,它会给我EXC_BAD_ACCESS。
-(IBAction)respondButtonPressed:(id)sender{
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
dateFormatter2.timeStyle = NSDateFormatterNoStyle;
[dateFormatter2 setDateFormat:@"MM/dd/yyyy HH:mm"];
NSString *dateTimeStr = [dateFormatter2 stringFromDate:run.RunDateTime];
[dateFormatter2 release];
}
当我查看控制台并打印描述时,它通常显示两件事中的一件:
正在调试的程序在从GDB调用的函数中发出信号。 GDB已将上下文恢复到调用之前的状态。 要更改此行为,请使用“set unwindonsignal off” 将放弃对包含该函数(CFShow)的表达式的评估。 正在调试的程序在从GDB调用的函数中发出信号。 GDB已将上下文恢复到调用之前的状态。 要更改此行为,请使用“set unwindonsignal off” 将放弃对包含该函数(CFShow)的表达式的评估。
或“run.runDateTime”是一些随机变量
编辑:我不确定我是否把它们放在正确的位置,因为它仍然不起作用(我可能没有)。
- (void)viewDidLoad {
[super viewDidLoad];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.timeStyle = NSDateFormatterNoStyle;
[dateFormatter setDateFormat:@"MM/dd/yyyy HH:mm"];
run.RunDateTime = [dateFormatter dateFromString:@"12/02/2012 12:22"];
NSString *dateTimeStr = [dateFormatter stringFromDate:run.RunDateTime];
[run.RunDateTime retain];
[dateFormatter release];
}
-(IBAction)respondButtonPressed:(id)sender{
NSDateFormatter *dateFormatter2 = [[NSDateFormatter alloc] init];
dateFormatter2.timeStyle = NSDateFormatterNoStyle;
[dateFormatter2 setDateFormat:@"MM/dd/yyyy HH:mm"];
NSString *dateTimeStr = [dateFormatter2 stringFromDate:run.RunDateTime];
[dateFormatter2 release];
}
我在结构中也有几个NSStrings,它们工作正常。
答案 0 :(得分:2)
从日期格式化程序分配/创建后,您需要保留RunDateTime。
[run.RunDateTime retain];
确保在你的dealloc中发布它!