Исправление утечки памяти для кода ниже - PullRequest
0 голосов
/ 28 февраля 2012

У меня проблема с исправлением утечки памяти для перенастроенного массива, как я могу исправить утечку памяти для приведенного ниже массива?

    NSMutableArray *retArr = [[NSMutableArray alloc] initWithCapacity:10];
for (int i=0; i < 10; i++) {
    [retArr insertObject:[arr objectAtIndex:i] atIndex:i];
}
[arr release];
return retArr;

Ответы [ 4 ]

3 голосов
/ 28 февраля 2012

Обычно вы должны автоматически возвращать возвращаемые значения, если только имя метода не начинается с new, alloc, copy или mutableCopy.

return [retArr autorelease];

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html#//apple_ref/doc/uid/20000994-SW6

2 голосов
/ 28 февраля 2012

Использовать авторелиз на NSMutableArray

NSMutableArray *retArr = [[[NSMutableArray alloc] initWithCapacity:10] autorelease];
for (int i=0; i < 10; i++) {
    [retArr insertObject:[arr objectAtIndex:i] atIndex:i];
}
[arr release];
return retArr;
1 голос
/ 28 февраля 2012

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

NSMutableArray *retArr = [[[NSMutableArray alloc] initWithCapacity:10] autorelease];

Надеюсь, это поможет вам.

0 голосов
/ 28 февраля 2012

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

NSMutableArray *retArr = [[[NSMutableArray alloc] initWithCapacity:10] autorelease];
for (int i=0; i < 10; i++) {
[retArr insertObject:[arr objectAtIndex:i] atIndex:i];

    }

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