ОШИБКА: утечка памяти, средства форматирования данных временно недоступны - PullRequest
1 голос
/ 16 февраля 2010

Я занимаюсь разработкой приложения для викторины. Я беру вопросы из XML-файла, анализирую его и отображаю случайные вопросы. Они хранятся в NSdictionary и NSMutableArray. Также приложение воспроизводит фоновую музыку и звук для нажатия кнопок (AVAudioPlayer). и вибрация (AudioServicesPlaySystemSound (kSystemSoundID_Vibrate))

В одной конкретной функции, если я пытаюсь освободить временные переменные, которые я использую (I.E NSDictionary и NSMutableArray), приложение вылетает, когда я достигаю эту функцию во второй раз. Следовательно, если я не выпускаю их, это работает хорошо, но в конечном итоге вылетает с ошибкой «EXC_BAD_ACCESS». Он не указывает на какую-либо строку или функцию.

Когда я использовал инструмент «УТЕЧКИ», он показал, что у меня было около 7000 утечек. Я не понимаю, как использовать этот инструмент, но я уверен, что я не создаю так много переменных, всего несколько и даже те, которые я выпускаю.

И только однажды я получил ОШИБКУ "средства форматирования данных временно недоступны".

Есть идеи, что я делаю не так? F1:)

PS: мой код очень прост, плюс я не знаю, в чем проблема, следовательно, я не знаю, какой код размещать здесь? Также я хотел бы знать, если я создаю NSString * в функции для временного использования, я должен выпустить его в конце функции? (Я выпускаю это) EDIT:

    -(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 голосов
/ 17 февраля 2010

через некоторое время после копания проблема была в том, что звуковой файл нужно было воспроизвести заново. Если я нажимаю кнопку и до завершения воспроизведения звукового файла, если я нажимаю снова, звуковой файл воспроизводился только один раз. В результате утечка памяти 3000.

ЕСЛИ я сделал это дважды, приложение рухнуло после утечки 6425. Отсюда ОШИБКА - «средства форматирования данных в настоящее время недоступны». (Я думаю)

0 голосов
/ 16 февраля 2010

Вы должны прочитать кое-что об управлении памятью в Какао. См. Mac Developer Center или учебное пособие в Cocoa Dev Central . Управление памятью на iPhone не сложно, жаль, что методом проб и ошибок.

...