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。