iphone - 我的 NSXMLParser 代码中的漏洞在哪里?

标签 iphone objective-c ios cocoa-touch nsxmlparser

我已经设置了一个 NSXMLParser 来解析 Twitter 提要,但是我遇到了内存泄漏,并且在使用仪器大约一百次之后我无法弄清楚它在哪里!下面是我的 NSXMLParser 代码,它在 ASIHTTPRequest 收到返回数据时进行解析。

-(void)ProcessAndParse{

    NSURL *url = [config urlForFeed:@"Twitter"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request setDelegate:self];
    [request startAsynchronous];

}

- (void)requestFinished:(ASIHTTPRequest *)request
{
    NSData *responseData = [request responseData];
   myparser = [[NSXMLParser alloc] initWithData:responseData];
    [myparser setDelegate:self];
    [myparser setShouldResolveExternalEntities:YES];
    [myparser parse];



}

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    currentElement = [elementName copy];
}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{


}

-(void)parserDidEndDocument:(NSXMLParser *)parser{


}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{




}

我知道这里遗漏了很多东西,但我正试图在继续之前阻止这种泄漏。它似乎以 currentElement = [elementName copy];didStartElement 方法为中心。

最佳答案

在为currentElement分配一个新元素之前,您需要先释放前一个元素,否则旧元素将没有任何其他引用并且会被泄漏。所以你可以这样做:

[currentElement release];
currentElement = [elementName copy];

或者,您可以将 ivar currentElement 属性声明为副本,只需这样做:

//This releases previous value, and copies the new Value.

self.currentElement = elementName;

关于iphone - 我的 NSXMLParser 代码中的漏洞在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080754/

相关文章:

iphone - 我们可以使用 NSMutable 对象作为非 NSMutable 类的成员吗

ios - 这种情况下Tableview的reloadData是否立即执行

ios - 'No Cellular Network Available'时如何调用方法

iOS NSMutableArray 如何检查它是否包含 NSNumber 对象?

ios - Swift - 离屏渲染

ios - 将弃用的属性重新分配给新属性 objective-c

iphone - NSDate dateFromString,如何解析 'around' UTC、GMT 和用户区域设置?

android - 如何使用视口(viewport)使我的网站宽度适合移动设备的大小?

ios - 从 Collection View 中删除项目后出现标签问题

ios - CoreML/MLModelConfig 首选MetalDevice - 了解设备放置启发式