我有这个
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];
现在我不知道何时释放那些在某些线程中运行的对象
答案 0 :(得分:1)
每当您alloc
(或copy
)时,您必须release
或autorelease
。
在这种情况下:
NSXMLParser *xmlParserf = [[[NSXMLParser alloc] initWithContentsOfURL:url] autorelease];
和
XMLParser *parserf = [[[XMLParser alloc] initXMLParser] autorelease];
这意味着至少在当前函数结束之前将其保留在内存中。如果其他对象挂在它上面(即retain
它),那么对象将保留在内存中,直到它们为released
(由其他对象组成)。