лучший способ избежать всех утечек памяти здесь - просто использовать @property (nonatomic, retain) NSMutableArray *sections;
, используя свойство, и вы можете быть уверены, что все работы по управлению людьми будут правильно управляться системой.Только не забывайте, что свойство сохраняет значение, когда вы выполняете setSections :, так что вам нужно передать автоматически освобожденный объект здесь.
self.sections = [NSMutableArray array];
...
[self.sections addObject:section];
Также, чтобы избежать всехПроблема в том, чтобы сделать все объекты, которые должны жить только в этом методе, автоматически.Например:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *responseString = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];
NSDictionary *results = [responseString JSONValue];
NSMutableArray *jSections = [results objectForKey:@"Items"];
self.sections = [NSMutableArray array];
for (NSArray* jSection in jSections) {
Section* section = [[[Section alloc] init] autorelease];
section.Id = [jSection objectForKey:@"Id"];
section.Description = [jSection objectForKey:@"Description"];
section.Image = [jSection objectForKey:@"Image"];
section.Parent = [jSection objectForKey:@"Parent"];
section.ProductCount = [jSection objectForKey:@"ProductCount"];
[self.sections addObject:section];
}
[delegate sectionsLoaded];
[self.view reloadData];
}
А также большинство объектов, которые вы пытаетесь освободить, уже автоматически освобождены: все параметры, передаваемые в ваш метод, не должны освобождаться вручную, проверьте, я думаю, JSONValue также следуетвозвращает автоматически освобожденный объект и все, что вы получаете, перечисляя или вызывая objectForKey: