0

文字列クラッシュ アプリケーションの使用。
tempは通常の文字列でありstrStartDate、Date からの文字列でもあります。.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、Date からの文字列でもあります。文字列 tempstrStartDate両方が同じ場所を割り当て、両方ともクラス変数であり、同じ場所を印刷しますが、クラッシュcase 0中に一時的に印刷されます。strStarDateなんで?

これは簡単なことですが、理解できません。私を助けてください。

4

2 に答える 2

1

stringFromDate で初期化した後、strStartDate で保持する必要があります。その呼び出しの結果は自動解放されるため、オブジェクトの解放を停止するには保持が必要です。

于 2012-11-30T06:13:55.323 に答える
0

strStartDateこれは、変数に値が保存されていないために発生し、その時点でnil(NULL)それを印刷したいとき%@に文字列値を取得できないため、アプリがクラッシュした..

最初に割り当てstrStartDate = @"";てから印刷してみてください。動作します..

于 2012-11-30T06:26:53.180 に答える