2012-04-06 2 views
0

Мое приложение рушится после загрузки эскизов. На этой линии код загрузки изображений (эскизы)Приложение сбой после загрузки изображений

else if ([tempTagName isEqualToString:@"Unicorn"]) 
      { 

       bottomIndexPage.unitArr = [[NSMutableArray alloc] init]; 
       NSArray *tempArr = [tempTagValue componentsSeparatedByString:@","]; 

       for (int i = 0; i<[tempArr count]; i++) 
       { 

        [bottomIndexPage.unitArr addObject:[[NSString alloc] initWithString:[tempArr objectAtIndex:i]]]; 

       } 

В Выходов, я не вижу никаких сообщений аварии. Необходимо загрузить эскизы, но приложение врезаться загрузив (90 + - эскизы)

Я думаю, что это что-то здесь

if (!loadXmlFromWeb) 
    { 
     xmlTextReaderPtr xmlreader = xmlReaderForMemory([xmlData bytes], 
                 [xmlData length], 
                 [path UTF8String], nil, 
                 (XML_PARSE_NOBLANKS | XML_PARSE_NOCDATA | XML_PARSE_NOERROR | XML_PARSE_NOWARNING)); 
     [self xmlParseProc:xmlreader]; 
    } 
} 

ответ

1

Первый: этот код утечки. Использование [[ NSString alloc ] initWithString: s ] возвращает выделенный объект, за который вы отвечаете за удаление. В подобном цикле вы должны использовать строку с автореализацией: [ NSString stringWithString: s ].

Но в этом случае вам не нужно новое значение строки вообще. -componentsSeparatedByString: уже подготовил строковые значения для вас. Вам даже не нужен цикл для вставки значений от tempArr. Вобще:

[ bottomIndexPage.unitArr addObjectsFromArray: tempArr ]; 
+0

Смотрите мое редактировать сообщения – Frenck

+0

я замечаю, вы не проверять возвращаемое значение 'xmlReaderForMemory'. Возможно, вы получаете сообщение об ошибке, а указатель 'xmlreader' равен NULL. Любое разыменование того, что NULL-указатель приведет к сбою. Ваш метод '-xmlParseProc' является вероятным преступником, хотя я не могу сказать, где, учитывая небольшие фрагменты кода, которые вы опубликовали. –

Смежные вопросы