I detach a thread to my method wich has a while-loop and even if I have an autoreleasePool, I release the objects manually since the while-loop can continue for a while... The problem is that after a while, the app crashes due to memory problems and if I look in Instruments I can see a huge pile of NSString allocated and a stairway to heaven is created in the graph... What do I miss to release?
while (keepGettingScores)  
{  
    NSString *jsonString = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];  
    NSDictionary *json = [jsonString JSONValue];  
    [jsonString release];   
    NSMutableArray *scores = [[NSMutableArray alloc] init];  
    [scores setArray:(NSMutableArray*)[[jsonString JSONValue] objectForKey:@"scores"]];
    NSSortDescriptor *sorter = [[NSSortDescriptor alloc] initWithKey:@"totalScore" ascending:NO];  
    [scores sortUsingDescriptors:[NSArray arrayWithObject:sorter]];  
    [sorter release];  
    [self performSelectorOnMainThread:@selector(updatePlayerTable:) withObject:scores waitUntilDone:NO];  
    [scores release];  
    [NSThread sleepForTimeInterval:1.0];  
}