使用字符串崩溃应用程序。
temp
是普通字符串,strStartDate
也是日期字符串。
.h文件
NSString *temp;
NSString *strStartDate
int status;
.m文件
-(void)viewDidLoad
{
[super viewDidLoad];
status = 1;
strStartDate=[[NSString alloc]init];
[self stateChanged];
}
-(void)stateChanged
{
switch(status)
{
case 0:
NSLog(@"%@",temp);
NSLog(@"Start Date : %@",strStartDate);
break;
case 1:
temp=[[NSString alloc]initWithString:@"Temp is here"];
chargeStartDate=[[NSDate date] retain];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM/YYYY"];
strStartDate = [dateFormat stringFromDate:chargeStartDate];
NSLog(@"string of start date : %@",strStartDate);
[timeFormat release];
[dateFormat release];
break;
}
}
temp
是普通字符串,strStartDate
也是日期字符串。
字符串temp
和strStartDate
都分配相同的位置,两者都是类变量,并打印相同的位置,但在case 0
temp中打印时strStarDate
崩溃。为什么呢?
我知道这很简单,但我无法理解。请帮帮我。
答案 0 :(得分:1)
在使用stringFromDate初始化strStartDate之后,需要对其进行保留。该调用的结果将自动释放,因此您需要使用retain来停止释放该对象。
答案 1 :(得分:0)
它的发生是因为在strStartDate
变量中没有存储值而且它是nil(NULL)
所以当你想用%@
打印它时,它的不是字符串值,所以app崩溃了..
尝试首先分配strStartDate = @"";
然后打印它,它会起作用..