如何知道何时释放iphone的字符串

时间:2010-07-21 01:22:28

标签: 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 个答案:

答案 0 :(得分:1)

每当您alloc(或copy)时,您必须releaseautorelease

在这种情况下:

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

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

这意味着至少在当前函数结束之前将其保留在内存中。如果其他对象挂在它上面(即retain它),那么对象将保留在内存中,直到它们为released(由其他对象组成)。