NSData dataWithContentsOfURL leaks.
Heej,
Ik vroeg me af of iemand wist waarom dataWithContentsOfURL van NSData leaked? Naboots code: NSData *content = [NSData dataWithContentsOfURL:url]; LEAK! Dan plaatsen we er een [content release]; bij, wat niet logisch is want je verwacht een auto released object terug, maar het zou kunnen dat Apple een foutje heeft gemaakt. We builden het weer. CRASH! Fijn. Alle manieren van contentsOfURL via NSData leaken. Omzeil oplossing NSError *error = nil; NSString *tmpContent = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&error]; NSData *content = [tmpContent dataUsingEncoding: NSASCIIStringEncoding]; LEAK en CRASH vrij. |
Hoezo verwacht je een autoreleased object terug...? je Alloceert hem,dus ben je zelf verantwoordelijk voor de release...
Volgens mij zou het niet mogen crashen, tenzij je de release eerder aanroept (onwaarschijnlijk) of je content-alloc in een if-statement doet, waardoor hij gereleased wordt terwijl het object al eerder gereleased is of niet bestaat. |
Citaat:
Code:
NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.answersingenesis.org/assets/images/articles/aqua/Bottlenose_Dolphin.jpg"]]; |
Vaak is het zo dat als je een leak ziet uit UIKit of Foundation is het iets dat daar uit een object gecreëerd hebt, zelf retained en niet released. Leaks in UIKit en Foundation zijn erg zeldzaam, er werken heel veel mensen aan en het meeste is al gefixed.
als eerste moet je altijd kijken in je eigen code. |
Alle tijden zijn GMT +2. Het is nu 21:42. |