Цель C - EXC_BAD_ACCESS на [NSArray count], но не могу понять, как - PullRequest
0 голосов
/ 07 февраля 2012

Я работаю над фрагментом кода, который получает URL-адрес и анализирует содержимое данных между активами тегов. В этом случае он ищет код между и. Когда возвращаемое тело URL не содержит этих тегов, метод cullXML: возвращает пустой массив, например:

return [NSArray arrayWithObjects: nil];

Я проверяю, чтобы убедиться, что возвращаемый массив имеет объекты с:

        if ( matchesXML.count ) {

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

Чего мне не хватает?

Больший фрагмент кода приведен ниже. Спасибо!

   if (self.newResults) {
        NSString *urlResult;
        NSArray *matchesXML;
        NSArray *match;
        NSDictionary *currentResult;
        NSMutableDictionary *results = [[NSMutableDictionary alloc] init];
        NSArray *returnedObjects;
        NSArray *dictionaryKeys;
        NSMutableArray *currentResultObjects;

        int i = 0;

        // determine tournament type, because the fields are different per type
        NSString *tournamentType;
        tournamentType = [[AFMethods tournamentTypeFromId:self.inputTournamentId] objectAtIndex:0];

        urlResult = [NSString stringWithFormat:@"%@", responseHandle];
        [responseHandle release];

        NSLog(@"urlResult retrieved: %@", urlResult);
        matchesXML = [AFMethods cullXML: urlResult forTag: @"matches"];

        NSLog(@"matches loaded: %@", matchesXML);
        NSLog(@"matchesXML.count %i", matchesXML.count);
        if ( matchesXML.count ) {
            NSLog(@"not nil");
        } 
        NSLog(@"just before tested");
        if ( matchesXML.count ) {
            NSLog(@"tested");

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012

Я нашел проблему!

Это не сбой, где я думал.Это было пару строк спустя.Я выпускал автоматически выпущенный объект.Должно быть, это была перенесенная строка из предыдущей организации кода.

Я удалил релиз, и он снова работает отлично.

0 голосов
/ 07 февраля 2012

Я предполагаю, что вы используете не оператор return, который вы перечислили, а тот, который возвращает другой NSArray, только этот не сохраняется. Первый NSLog вызывает использование кучи, растоптав объект массива.

...