2012-04-09 4 views
0

Мое приложение не разбилось.Мое приложение разбилось, когда я создал объект автообновления DDXMLDocument

DDXMLDocument *d = [[DDXMLDocument alloc] initWithData:abookConnData options:0 error:nil]; 
books = [d nodesForXPath:@"abooks/abook" error:nil]; 

Я изменил объект DDXMLDocument на autorelease, и мое приложение начало разбиваться. Но почему?

DDXMLDocument *d = [[[DDXMLDocument alloc] initWithData:abookConnData options:0 error:nil] autorelease]; 
books = [d nodesForXPath:@"abooks/abook" error:nil]; 

Мое приложение разбилось на DDXMLNode. [DDXMLNode XMLStringWithOptions:]

enter image description here

ответ

1

Вы не даете достаточно коды, чтобы сказать наверняка, но это почти наверняка случай, когда ваш DDXMLDOcument * (d) высвобождаются, прежде чем использовать его.

Попробуйте включить обнаружение зомби, а также поставить точку останова на исключение. Часто это может привести к точной строке кода, где проблема.

Еще одна уловка для отладки, чтобы создать подкласс DDXMLDocument и переопределить Alloc и RELEASE для вызова NSLog() событие (то [super alloc] или [super release]!), Так что вы можете посмотреть, что происходит.

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