来自NSURL的NSData内存泄漏问题

时间:2010-02-09 10:44:28

标签: iphone

我的目标是将NSURL转换为NSData而没有任何内存泄漏...我搜索了很多,并从网站上找到了多个答案,但对我来说没有任何作用。任何人都可以帮助我吗?

以下是我尝试的方法,但到目前为止没有任何作用:

NSURL *url = [NSURL URLWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss"];
NSData *data;
data = [NSData dataWithContentsOfURL:url];

NSError *error;
NSString* contents = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss"] encoding:NSUTF8StringEncoding error:nil];
NSData* xmlData = [contents dataUsingEncoding:NSUTF8StringEncoding];

NSURL *url = [[NSURL alloc]initWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss"];
 NSData *data = [[NSData alloc]initWithContentsOfURL:url options:0 error:nil];
 /*do something with data*/
 [data release];
 [url release];

注意:

当我将我的网址更改为http://www.wikipedia.org时,代码没有任何内存泄漏...帮助我......

提前致谢。

2 个答案:

答案 0 :(得分:3)

查看代码示例,你做得对 - 应该没有泄漏。

您的泄漏只出现在某些网址上这一事实让我觉得它发生在您的代码中的其他位置 - 一旦您拥有它,您对数据做了什么?

另外,您是否正在测试模拟器或设备上的泄漏?模拟器有时会报告没有任何泄漏 - 你应该总是检查设备,以确保它是真正的泄漏,而不仅仅是模拟器是奇怪的。

萨姆

PS要格式化代码,只需在每行代码前放置4个空格。 (或选择它并单击代码示例按钮!)

答案 1 :(得分:0)

NSURL *url = [NSURL URLWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss"];

NSData *data ; data= [NSData dataWithContentsOfURL:url];


NSError error; NSString contents = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss"] encoding:NSUTF8StringEncoding error:nil]; 

NSData* xmlData = [contents dataUsingEncoding:NSUTF8StringEncoding];

NSURL *url = [[NSURL alloc]initWithString:@"http://images.apple.com/main/rss/hotnews/hotnews.rss"]; 

NSData *data = [[NSData alloc]initWithContentsOfURL:url options:0 error:nil]; 

/do something with data/ 

[data release]; 

[url release];