0

使用字符串崩溃应用程序。
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 0temp 中是在strStarDate崩溃时打印。为什么?

我知道这很简单,但我无法理解。请帮我。

4

2 回答 2

1

您需要在使用 stringFromDate 初始化 strStartDate 后对其进行保留。该调用的结果将被自动释放,因此您需要保留来停止释放对象。

于 2012-11-30T06:13:55.323 回答
0

它的发生是因为在strStartDate变量中没有存储值,nil(NULL)所以当你想打印它%@时它没有得到字符串值所以应用程序崩溃了..

尝试先分配strStartDate = @"";然后打印它,它会工作..

于 2012-11-30T06:26:53.180 回答