对象的参数丢失(iPhone的XCode)

时间:2013-01-27 18:10:39

标签: string object xcode4 parameters split

我这里有一种奇怪的行为。适用于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值,因此它们以某种方式被删除。但是,我并不真的相信这个理论,因为在开始时元素是正确的和可用的,只有在以后它们被删除。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

解决了它:

取代:

A      = [zeilen objectAtIndex:0];

通过

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

内存未分配,因此丢失了。