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.

¿Fue útil?

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];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top