NSData от NSURL Проблема утечки памяти - PullRequest
1 голос
/ 09 февраля 2010

Моя цель - конвертировать 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];

Примечание:

Когда я изменяю свой URL на http://www.wikipedia.org код не имеет утечки памяти ... Помогите мне ...

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 09 февраля 2010

Глядя на примеры кода, вы делаете все правильно - утечки не должно быть.

Тот факт, что ваша утечка появляется только при определенных URL, заставляет меня думать, что это происходит где-то еще в вашем коде - что вы делаете с данными, когда они у вас есть?

Кроме того, вы тестируете утечки на симуляторе или устройстве? Симулятор иногда сообщает об утечках там, где их нет - вы всегда должны также проверять устройство, чтобы убедиться, что это настоящая утечка, а не просто нечетный симулятор.

Sam

PS Чтобы отформатировать код, просто поставьте 4 пробела перед каждой строкой кода. (или выберите его и нажмите кнопку образца кода!)

0 голосов
/ 09 февраля 2010
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];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...