Утечка памяти XCode - PullRequest
       2

Утечка памяти XCode

0 голосов
/ 23 июня 2011

У меня есть утечка памяти, когда я вызываю следующий метод

- (NSArray *) children
{
NSArray *children = [node objectForKey:TFHppleNodeChildrenKey];
NSMutableArray *hpple = [NSMutableArray arrayWithCapacity:[children count]];
for(NSDictionary *child in children) {
    [hpple addObject:[[TFHppleElement alloc] initWithNode:child]];
    [child release];
}
return hpple;
}

Я получаю утечку памяти на TFHppleElement, я выделяю это, но я не уверен в лучшем способе освободить его в этом контексте?TFHppleElement initWithNode выглядит так:

- (id) initWithNode:(NSDictionary *) theNode
    {
 if (!(self = [super init]))
  return nil;

[theNode retain];
node = theNode;

return self;
 }

Ответы [ 2 ]

3 голосов
/ 23 июня 2011

Вы можете просто автоматически высвободить этот объект, чтобы ответственность за его освобождение выполнила среда выполнения:

[hpple addObject:[[[TFHppleElement alloc] initWithNode:child] autorelease]];
0 голосов
/ 23 июня 2011

Не уверен, потому что я не запускал Objective-C не так давно, но я бы хотел автоматически высылать его, когда вы его выделяете. Это избавит вас от необходимости управлять выпуском и заставлять среду выполнения управлять выпуском этого.

- (NSArray *) children
{
NSArray *children = [node objectForKey:TFHppleNodeChildrenKey];
NSMutableArray *hpple = [NSMutableArray arrayWithCapacity:[children count]];
for(NSDictionary *child in children) {
    [hpple addObject:[[[TFHppleElement alloc] initWithNode:child] autorelease]];
    [child release];
}
return hpple;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...