Статический анализатор говорит, что у меня есть потенциальная утечка объекта - PullRequest
1 голос
/ 02 июля 2010

Это объект, который я сделал, чтобы сделать несколько флеш-карт. Первый метод (я пропустил основную часть) генерирует NSMutabaleArray объектов Card с переданным оператором in и работает нормально. Второй метод «drawFromDeck» вызывается для объекта Deck из моего контроллера представления и также работает нормально, но Static Analyzer говорит, что у меня может быть утечка объекта.

Вот код.

#import "Deck.h"

@class Deck;
@implementation Deck

@synthesize cards;

- (id)initDeckWithOperator: (NSString*)mathOper {

...

 return self;
}

- (id)drawFromDeck {
    int index = random() % [cards count];
    Card* selectedCard = [[cards objectAtIndex:index] retain];
    [cards removeObjectAtIndex:index];
    return selectedCard;
}

@end

1 Ответ

6 голосов
/ 02 июля 2010

Да, у вас есть утечка объекта.Вы должны

return [selectedCard autorelease];

Причина в том, что вы -retain отредактировали selectedCard, поэтому вы обязаны -release его.Но вы не можете использовать -release, так как он должен быть действителен после завершения функции, поэтому вам нужно использовать -autorelease для переноса владения в пул автоматического выпуска.1011 * не должен -release возвращать значение.

...