Pérdida de memoria con NSXMLParser en el iPhone
-
29-09-2019 - |
Pregunta
a continuación es mi código, fugas dice que estoy recibiendo una pérdida de memoria en torno método alloc NSMutableString. Estoy seguro de que es algo que simplemente se pasa por alto, hágamelo saber si alguien tiene alguna idea. Gracias!
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if (!currentValue) {
currentValue = [[NSMutableString alloc] initWithCapacity:[string length]];
}
[currentValue setString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"phone"]){
currentAgent.phone = currentValue;
}
[currentValue release];
currentValue = nil;
}
-Agente es un objeto personalizado que se creó cuando se inicializa la clase. El XML es válida y tiene todas las etiquetas comenzar el apropiado / finales.
Solución
Mirando por encima de este código, creo que es más probable que su clase agente tiene una fuga teléfono. Suponiendo agentes utiliza retain
para la propiedad de teléfono, esto hará que el teléfono que persista más de lo debido.
El creador del objeto se "acreditado" con la fuga, incluso si el extra retener está en otra parte.
En otras palabras, en Agente:
- (void)dealloc {
self.phone = nil;
// anything else you need to do
[super dealloc];
}