Утечка памяти при выделении NSMutableArray - PullRequest
0 голосов
/ 23 марта 2010

Я получаю утечку памяти при выделении NSMutableArray .. в

NSMutableArray *contactsArray =[[NSMutableArray alloc] init]; 

КОД:

+(NSMutableArray*)getContacts
{
    addressBook = ABAddressBookCreate();

    NSArray* peopleArray =  (NSArray*) ABAddressBookCopyArrayOfAllPeople(addressBook);

    int noOfPeople = [peopleArray count];

    NSMutableArray *contactsArray =[[NSMutableArray alloc] init]; 

    for ( int i = 0; i < noOfPeople; i++)
    {
        ABRecordRef person =   [peopleArray objectAtIndex:i];
        ABRecordID personId = ABRecordGetRecordID(person);
        NSString* personIdStr = [NSString stringWithFormat:@"%d", personId];

        ContactDTO* contactDTO = [AddressBookUtil getContactDTOForId:personIdStr];


        [contactsArray addObject:contactDTO];

    }
    [peopleArray release];
    return contactsArray;

}

Ответы [ 2 ]

2 голосов
/ 23 марта 2010

Это стандартная процедура, при которой объекты, возвращаемые методами (в вашем случае contactsArray), автоматически возвращаются перед возвратом. Вы можете либо return [contactsArray autorelease];, либо создать его уже автоматически с помощью [NSMutableArray arrayWithCapacity:noOfPeople]

0 голосов
/ 23 марта 2010

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

...