我这里有一种奇怪的行为。适用于iOS 6的XCode 4(Iphone 4s) 在init-section中,我想从文件中读取数据。
NSString *rawData = [[NSString alloc] initWithContentsOfFile:filePathLib encoding:NSUTF8StringEncoding error:NULL];
NSArray *zeilen = [rawData componentsSeparatedByString:@";"];
NSLog(@"Check1 \n%@\n%@",rawData, zeilen);
好了,现在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;
}
现在我运行这个程序。 如果使用第一个分支,程序崩溃,如果使用第二个分支,它运行完美。 如果我使用断点,我可以观察到以下内容:
NSString * 0x20063bf0 @" A123" (正确的值)
B,C,D也正确
之后,崩溃前的一行:
文件读取分支:
A,B和C不可用,D是正确的。
默认,分支:
A,B,C和D是正确的。
变量无处可操作甚至删除。
有没有人知道问题出在哪里?
我的假设:阵列" zeilen"不包含NSString值,因此它们以某种方式被删除。但是,我并不真的相信这个理论,因为在开始时元素是正确的和可用的,只有在以后它们被删除。
有什么想法吗?
答案 0 :(得分:0)
解决了它:
取代:
A = [zeilen objectAtIndex:0];
通过
A = [[NSString alloc] stringWithFormat:@"%@",[zeilen objectAtIndex:0]];
内存未分配,因此丢失了。