gpt4 book ai didi

iphone - 解析 xml 时 NSCFString appendString 泄漏

转载 作者:行者123 更新时间:2023-12-03 21:20:29 25 4
gpt4 key购买 nike

我在消除我正在开发的 iPhone 应用程序中的泄漏问题时遇到了问题。我正在解析 xml feed 来获取数据。这是我用来解析的代码

[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
NSData *xml = [NSData dataWithContentsOfURL: [NSURL URLWithString:@"url link"]];
self.parser = [[NSXMLParser alloc] initWithData:xml];


[self.parser setDelegate:self];
[self.parser parse];
[self.parser release];
self.parser=nil;

以及解析代码

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { if(![elementName compare:@"item"])
{tempElement = [[XMLElement alloc] init];
}
else if(![elementName compare:@"title"])
{
self.currentAttribute = [NSMutableString string];
}

else if(![elementName compare:@"link"])
{
self.currentAttribute = [NSMutableString string];
}
else if(![elementName compare:@"comments"])
{
self.currentAttribute = [NSMutableString string];
}
else if(![elementName compare:@"pubDate"])
{
self.currentAttribute = [NSMutableString string];
}
else if(![elementName compare:@"category"])
{
self.currentAttribute = [NSMutableString string];
}

else if(![elementName compare:@"description"])
{
self.currentAttribute = [NSMutableString string];
}}

我的每一个都出现泄漏

self.currentAttribute = [NSMutableString string];

然后

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{NSString *strAppend = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if ([strAppend length] > 0) {
[self.currentAttribute appendString:string];
}

}

感谢任何帮助。提前致谢

最佳答案

如果您的属性被保留,如下所示:

@property (nonatomic, retain) NSXMLParser * parser;

...然后他们会被保留两次。因此,仅发布一个版本是无法做到这一点的。您可以这样设置它们:

NSXMLParser *tempParser = [[NSXMLParser alloc] initWithData:xml];
self.parser = tempParser;
[tempParser release];

然后用 self.parser 做任何你需要做的事情。然后在您的 dealloc 方法中,释放它。由于这种方式它的保留计数为 1(原始分配保留已使用 tempParser 释放),因此一个版本应该可以做到这一点:

- (void) dealloc {
[parser release];
[super dealloc];
}

另外,我很困惑如果每种可能性都有相同的结果,为什么你还要费劲去编写 if-else 语句。

关于iphone - 解析 xml 时 NSCFString appendString 泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5201764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com