-1

我在这里有一个奇怪的行为。XCode 4 for iOS 6 (Iphone 4s) 在初始化部分我想从文件中读取数据。

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 值,因此它们以某种方式被删除。但是,我并不真正相信这个理论,因为一开始这些元素是正确且可用的,只是后来它们被删除了。

任何想法?

4

1 回答 1

0

解决了它:

代替:

A      = [zeilen objectAtIndex:0];

经过

A      = [[NSString alloc] stringWithFormat:@"%@",[zeilen objectAtIndex:0]];

内存没有分配,因此它丢失了。

于 2013-01-28T09:19:14.920 回答