私はここで奇妙な振る舞いをしています。XCode 4 for iOS 6 (Iphone 4s) init-section で、ファイルからデータを読み取りたい。
NSString *rawData = [[NSString alloc] initWithContentsOfFile:filePathLib encoding:NSUTF8StringEncoding error:NULL];
NSArray *zeilen = [rawData componentsSeparatedByString:@";"];
NSLog(@"Check1 \n%@\n%@",rawData, zeilen);
OK、LogItem は、正しいデータが読み取られたことを示しています。
今、私はif条件を持っています:
if ([zeilen count]==4){
A = [zeilen objectAtIndex:0];
B = [zeilen objectAtIndex:1];
C = [zeilen objectAtIndex:2];
D =[[zeilen objectAtIndex:3] intValue];
NSLog(@"Check2 \n%@\n%@ - %@ - %@ - %@ - %d",rawData, zeilen, A, B, C, D);
} else {
A = @"A0";
B = @"B0";
C = @"C0";
D = 3;
}
今、私はこのプログラムを実行します。最初の分岐が使用された場合、プログラムはクラッシュします。2 番目の分岐が使用された場合、プログラムは完全に実行されます。ブレークポイントを使用すると、次のことがわかります。
NSString * 0x20063bf0 @"A123" (正しい値)
B、C、Dも正解
後で、クラッシュの前の行:
ファイル読み取りブランチ:
A、B、C は利用できません。D が正解です。
デフォルト、ブランチ:
A、B、C、D が正解です。
変数は、他の場所で操作されたり、削除されたりすることはありません。
問題がどこにあるのか、誰にも分かりますか?
私の仮定:配列「zeilen」にはNSString値が含まれていないため、何らかの形で削除されています。しかし、私はこの理論を本当に信じていません。なぜなら、最初は要素が正しくて利用可能であり、後で削除されるからです。
何か案が?