Pregunta

Estoy usando TouchXML para analizar un XML-corriente de la siguiente manera:

CXMLDocument *parser = [[CXMLDocument alloc] initWithXMLString:responseString options:0 error:nil];
[responseString release];

// array holding all the nodes
NSArray *directionNodes = [parser nodesForXPath:@"//direction" error:nil];
NSArray *linieNodes = [parser nodesForXPath:@"//route" error:nil];
NSArray *timeNodes = [parser nodesForXPath:@"//time" error:nil];

    for (int i = 0; i < [directionNodes count]; i++) {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        CXMLElement *direction = [directionNodes objectAtIndex:i];
        CXMLElement *route = [linieNodes objectAtIndex:i];
        CXMLElement *time = [timeNodes objectAtIndex:i];

        // if rows are empty, stop it
        if ([[direction stringValue] isEqualToString:@""]) {
            break;
        }

        AbfahrtszeitResult *result = [[AbfahrtszeitResult alloc] init];
        [result setLinie:[route stringValue]];
        [result setZiel:[direction stringValue]];
        [result setZeit:[time stringValue]];

        [mutableAbfahrten addObject:result];
        [result release];
        [pool release];
    }

Ahora, siempre me dan una pérdida de memoria en el -line "stringValue" ... estoy haciendo algo mal o es TouchXML?

Muchas gracias,

Stefan

-(NSString *) linie {
return linie;
}

- (void) setLinie:(NSString *)textValue {
    [textValue retain];
    [linie release];
    linie = textValue;
}

-(NSString *) ziel {
    return ziel;
}

-(void) setZiel:(NSString *)textValue {
    [textValue retain];
    [ziel release];
ziel = textValue;
}

-(NSString *) zeit {
return zeit;
}

-(void) setZeit:(NSString *)textValue {
    [textValue retain];
    [zeit release];
zeit = textValue;
}

+ (NSString *) cleanUpString:(NSString *) cleanme {
NSMutableString *tempString = [[NSMutableString alloc] initWithString:cleanme];
[tempString replaceOccurrencesOfString:@"&nbsp;" withString:@" " options:0 range:NSMakeRange(0, [tempString length])];
[tempString replaceOccurrencesOfString:@"&nbsp" withString:@" " options:0 range:NSMakeRange(0, [tempString length])];

return [tempString autorelease];

}

¿Fue útil?

Solución

Usted tiene al menos una fuga cuando [[direction stringValue] isEqualToString:@""] es cierto a medida que romper el bucle sin soltar su AutoreleasePool. Más allá de eso, tendríamos que ver la implementación de su clase AbfahrtszeitResult para ver cómo se define el colocador Linie.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top