错误:内存泄漏,数据格式化程序暂时不可用

时间:2010-02-16 06:04:02

标签: iphone memory-leaks nsdictionary

我正在开发一个测验应用。我从xml文件中提问,解析它并显示随机问题。它们存储在NSdictionary和NSMutableArray中。此外,该应用程序播放背景音乐和声音单击按钮(AVAudioPlayer)。和振动(AudioServicesPlaySystemSound(kSystemSoundID_Vibrate))

在一个特定的函数中,如果我尝试释放我使用的临时变量(I.E NSDictionary和NSMutableArray),应用程序崩溃我第二次到达该函数。因此,如果我不发布这些,它工作正常,但最终崩溃与“EXC_BAD_ACCESS”错误。它没有指出任何线或功能。

当我使用工具“LEAKS”时,它显示我有大约7000个泄漏。我不明白如何使用该工具,但我确信我不会创建这么多变量,尤其是我发布的那些变量。

一旦我收到错误“数据格式化程序暂时不可用”。

任何想法我做错了什么? F1:)

PS:我的代码很简单,加上我不知道问题是什么,因此我不知道在这里发布什么代码? 另外我想知道如果我在一个函数中创建一个NSString *应该在函数结束时释放它吗?(我确实发布了它) 编辑:

    -(void) loadQuestion
    { 
    strCorrectAnswer = @"";
    int intQuestionNo;
    NSString *strQuestionNo = [[NSString alloc] init];

    // get random question out  the xml file  
NSDictionary *dctQue = [dctQuestions  objectForKey:strQuestionNo];
// blah blah

    // jumble the answers to   be displaed


NSMutableArray *answerJumble = [[NSMutableArray alloc] init];
NSMutableArray *answers =[NSMutableArray arrayWithObjects:[dctQue objectForKey:@"WrongAnswer1"],[dctQue objectForKey:@"WrongAnswer2"],[dctQue objectForKey:@"WrongAnswer3"],[dctQue objectForKey:@"CorrectAnswer"],nil];

 // blah blah

  /*
[strQuestionNo release];
[answers release];
[answerJumble release]; */  

}

2 个答案:

答案 0 :(得分:0)

您应该在Cocoa中阅读有关内存管理的内容。请参阅Mac Developer Centertutorial at Cocoa Dev Central。 iPhone上的内存管理并不难,通过反复试验进行编码是很可惜的。

答案 1 :(得分:0)

经过一番挖掘后,问题就是声音文件必须重播。如果我按下一个按钮,然后在声音文件完成播放之前再按一次,声音文件只播放一次。导致内存泄漏3000。

如果我在6425的泄漏后两次使用该应用程序wud崩溃。因此ERROR-“数据格式化程序当前不可用”。(我猜)