Почему этот объект-c IOS-кода не протекает? - PullRequest
1 голос
/ 30 декабря 2011

Я повторно использую Surl, так что похоже, что он будет течь.Но инструменты не показывают ссылку.Я не должен понимать, как он может использовать его без создания мусорных строк.

NSString *rcode = @"DDD";

NSString *surl = [NSString stringWithFormat: @"http://www.myweather.com/%@_%@.png", rcode, @"7"];
NSURL *url = [NSURL URLWithString: surl]; 
UIImage *image7 = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]]; 

surl = [NSString stringWithFormat: @"http://www.myweather.com/%@_%@.png", rrcode, @"6"];
url = [NSURL URLWithString: surl]; 
UIImage *image6 = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]]; 

surl = [NSString stringWithFormat: @"http://www.myweather.com/%@_%@.png", rrcode, @"5"];
url = [NSURL URLWithString: surl]; 
UIImage *image5 = [UIImage imageWithData: [NSData dataWithContentsOfURL:url]]; 

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Посмотрите на эту строку:

[NSString stringWithFormat: @"http://www.myweather.com/%@_%@.png", rcode, @"7"];

+[NSString stringWithFormat:] - это «удобный конструктор», иногда называемый «удобным методом», который возвращает строку NSS, которой вы не владеете, поэтому вы не несете ответственности за ее освобождение, если не решите сохранить ее самостоятельно ( что вы не сделали).

Основное правило: если вы получаете объект из метода, начинающегося с «alloc», «new», «copy» или «mutableCopy», то вы обязаны освободить его. В противном случае вы не.

Я не вижу здесь утечки с ARC или без нее.

0 голосов
/ 30 декабря 2011

Этот код не пропускает, потому что он использует объекты "autoreleased".

Весь код создания объекта, который вы написали, использует вспомогательные методы, которые возвращают автоматически выпущенные объекты.Это означает, что они будут выпущены, когда будет выпущен соответствующий пул автоматического выпуска.

Пожалуйста, обратитесь к этой странице в Apple Расширенное руководство по программированию управления памятью , чтобы узнать больше об авто-выпуске.

...