Должно ли это быть автоматически выпущено? или есть способ сделать это вручную? - PullRequest
0 голосов
/ 18 декабря 2011

Здравствуйте, мне было интересно, может ли кто-нибудь дать мне несколько советов по управлению памятью.

У меня есть следующее:

-(NSMutableArray*)addAllObjectesInbetween:(NSMutableArray*)betweenTheTwo{

    NSMutableArray* toReturn = [betweenTheTwo mutableCopy];
    [toReturn insertObject:@"oneObject" atIndex:1];

    return toReturn;
}

Теперь я знаю это, потому что я делаю изменяемую копию.что я должен выпустить toReturn, но я не уверен, как это сделать, потому что он возвращается в другую функцию.Я не хочу выпускать его, потому что он отправлен, но если я попытаюсь выпустить его позже, он просто не будет вызван.Так что я думал о добавлении autorelease к mutableCopy, но я не уверен, что это лучшее, что можно сделать ... Может ли кто-нибудь помочь мне здесь?Спасибо!

Ответы [ 2 ]

2 голосов
/ 18 декабря 2011

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

return [toReturn autorelease];

Это потому, что по соглашению, если ваш метод не начинается с init или (содержит) copy, он должен возвращать объект с автоматическим освобождением. Если вы хотите вернуть объект +1, измените имя метода, чтобы оно оставалось согласованным.

1 голос
/ 18 декабря 2011

Вы должны либо автоматически выпустить toReturn, либо переименовать свою функцию, чтобы начать с copy, например copyAllObjectsInBetween: или mutableCopy, например mutableCopyAllObjectsInBetween:.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...