Objective-C / Какао: у меня есть утечка памяти здесь? - PullRequest
1 голос
/ 07 апреля 2009

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

-(void)callingMethod
{
     NSMutableString *myStr = [[[NSMutableString alloc] initWithCapacity:0] autorelease];
     myStr = [self calledMethod];
}

И мой вызванный метод:

-(NSMutableString*)calledMethod
{
    NSMutableString *newStr = [[NSMutableString alloc] initWithCapacity:0];
    // do some stuff with newStr
    return [newStr autorelease];
}

Потеряю ли я память где-нибудь здесь? Я чувствую, что выделяю здесь ненужную сумму.

1 Ответ

6 голосов
/ 07 апреля 2009

Нет, у вас нет утечки памяти, но ваш инстинкт, что вы выделяете ненужную сумму, верен.

Как минимум, вы должны рассмотреть возможность переписать callingMethod как:

- (void)callingMethod
{
    NSMutableString *myStr = [self calledMethod];
}

Вы также можете убрать calledMethod как:

- (NSMutableString*)calledMethod
{
    return [NSMutableString stringWithCapacity:0]; // why 0 capacity?
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...