2010-07-21 79 views
0

我有这个如何知道什么时候释放字符串iphone

NSXMLParser *xmlParserf = [[NSXMLParser alloc] initWithContentsOfURL:url]; 
    // NSLog(@"URL%@",urlf); 
    //Initialize the delegate. 

    XMLParser *parserf = [[XMLParser alloc] initXMLParser]; 
    [xmlParserf setDelegate:parserf]; 

    //Start parsing the XML file. 

    BOOL successs = [xmlParserf parse]; 

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; 

    NSLog(@" this xml is %d",[xmlParserf retainCount]);// getting error 
    NSLog(@" this paaat is %d",[parserf retainCount]);// getting error 

    if(successs) 
    { 
     NSLog(@"ZONE IS PARSED"); 
     [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; 
    } 
    else 
    { 
     NSLog(@"NOT PARSED!!!"); 
    } 

    //[xmlParserf release]; not working 
      //[parserf release]; 

现在我不知道什么时候才能释放这些在某些线程中运行这些对象

回答

1

每次你alloc(或copy),你必须是releaseautorelease

在这种情况下:

NSXMLParser *xmlParserf = [[[NSXMLParser alloc] initWithContentsOfURL:url] autorelease]; 

XMLParser *parserf = [[[XMLParser alloc] initXMLParser] autorelease]; 

这意味着你保持它在内存中至少直到当前函数的末尾。如果其他对象挂在它上面(即retain it),那么这些对象会留在内存中,直到它们是released(通过那些其他对象)。

+0

谢谢先生:-) – ram 2010-07-21 01:45:50