2011-12-30 2 views
1

Я повторно использую surl, поэтому кажется, что это будет протекать. Но инструменты не показывают ссылку. Я не должен понимать, как он может его повторно использовать, не создавая строки мусора.Почему нет этой цели? Сбой кода IOS?

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]]; 
+0

Не имеет ли ObjC достойного GC сейчас? – cHao

+0

@cHao Objective C для разработки Mac OS X может использовать GC. Для iOS нет GC. Но с iOS 5 sdk они добавили [ARC] (http://clang.llvm.org/docs/AutomaticReferenceCounting.html) –

ответ

1

Посмотрите на этой линии:

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

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

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

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

0

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

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

Пожалуйста, обратитесь к этой странице в Advanced Memory Management Programming Guide от Apple, чтобы узнать больше об автообновлении.

+0

Спасибо за ссылку! И обратная связь! – GeorgeInKansas

Смежные вопросы