Objective c NSXML解析器内存泄漏

Objective c NSXML解析器内存泄漏,objective-c,cocoa-touch,nsxmlparser,Objective C,Cocoa Touch,Nsxmlparser,谁能告诉我这个解析器代码有内存泄漏吗 #import <Foundation/Foundation.h> @interface WSXMLParser : NSObject<NSXMLParserDelegate> { NSMutableDictionary* fullInfo; NSMutableString* keyName; NSMutableString* keyValue; BOOL shouldAddKeyValue; }

谁能告诉我这个解析器代码有内存泄漏吗

#import <Foundation/Foundation.h>

@interface WSXMLParser : NSObject<NSXMLParserDelegate>
{
    NSMutableDictionary* fullInfo;
    NSMutableString* keyName;
    NSMutableString* keyValue;
    BOOL shouldAddKeyValue;

}



- (NSMutableDictionary *)metaDataForXML:(NSURL*)xmlURL;

@end




#import "WSXMLParser.h"

@implementation WSXMLParser

-(NSMutableDictionary *)metaDataForXML:(NSURL *)xmlURL
{
    fullInfo=[[NSMutableDictionary alloc]init];
    keyValue=[[NSMutableString alloc] init];
    shouldAddKeyValue=NO;

    NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
    [parser setDelegate:self];
    [parser parse];

    return fullInfo;
}


- (void)parserDidStartDocument:(NSXMLParser *)parser
{
   NSLog(@"parsing start");
}

- (void)parserDidEndDocument:(NSXMLParser *)parser
{
   NSLog(@"parsing end");
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
    [keyValue setString:@""];
    shouldAddKeyValue=YES;

    keyName=[NSMutableString stringWithString:elementName];
}

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

    [keyValue appendString:string];
}

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

    if(shouldAddKeyValue)
    {
        NSCharacterSet * whitespaceCharacterSet=[NSCharacterSet whitespaceAndNewlineCharacterSet];
        NSString *trimmedString = [keyValue stringByTrimmingCharactersInSet: whitespaceCharacterSet];

        if ([trimmedString length]==0)                
            return;

        NSString* value=[keyValue copy];
        [fullInfo setObject:value forKey:keyName];
        [keyValue setString:@""];
    }

    shouldAddKeyValue=NO;
}

@end
#导入
@接口WSXMLParser:NSObject
{
NSMutableDictionary*fullInfo;
NSMutableString*键名;
NSMutableString*keyValue;
BOOL应该添加keyvalue;
}
-(NSMutableDictionary*)metaDataForXML:(NSURL*)xmlURL;
@结束
#导入“WSXMLParser.h”
@WSXMLParser的实现
-(NSMutableDictionary*)metaDataForXML:(NSURL*)xmlURL
{
fullInfo=[[NSMutableDictionary alloc]init];
keyValue=[[NSMutableString alloc]init];
shouldAddKeyValue=否;
NSXMLParser*parser=[[NSXMLParser alloc]initWithContentsOfURL:xmlURL];
[解析器setDelegate:self];
[语法分析器解析];
返回完整信息;
}
-(void)parserdistartdocument:(NSXMLParser*)解析器
{
NSLog(@“解析开始”);
}
-(void)parserDidEndDocument:(NSXMLParser*)解析器
{
NSLog(@“解析结束”);
}
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qualifiedName属性:(NSDictionary*)attributeDict
{
[keyValue设置字符串:@”“;
shouldAddKeyValue=是;
keyName=[NSMutableString stringWithString:elementName];
}
-(void)解析器:(NSXMLParser*)解析器查找字符:(NSString*)字符串{
[keyValue appendString:string];
}
-(void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName{
if(shouldAddKeyValue)
{
NSCharacterSet*whitespaceCharacterSet=[NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString*trimmedString=[keyValue StringByTrimmingCharactersSet:whitespaceCharacterSet];
如果([trimmedString长度]==0)
返回;
NSString*值=[keyValue copy];
[fullInfo setObject:value-forKey:keyName];
[keyValue设置字符串:@”“;
}
shouldAddKeyValue=否;
}
@结束

我正在使用xcode 4.5.1并启用了项目ARC。此解析代码需要每5-10秒调用一次,如果调用此解析程序几分钟,为什么应用程序内存不足???

有一个名为Leaks的工具,你知道……是的,我用Xcode 4.2检查了instrument version 4.2,但由于一些问题无法用Xcode 4.5和instrument检查。我没有发现任何泄漏与仪器版本4.2与Xcode 4.2。