Проблема утечки NSCoding с initWithCoder - PullRequest
1 голос
/ 23 ноября 2010

У меня есть утечка в следующем коде:

-(id)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super init]) {
        self.Tag = [aDecoder decodeObjectForKey:KEY_TAG];
        self.ParentTag = [aDecoder decodeObjectForKey:KEY_PARENT_TAG];
        self.Order = [aDecoder decodeObjectForKey:KEY_ORDER];
        self.OrderFavorite = [aDecoder decodeObjectForKey:KEY_ORDER_FAVORITE];
        self.isFavorite = [aDecoder decodeObjectForKey:KEY_IS_FAVORITE];
        self.isPurchased = [aDecoder decodeObjectForKey:KEY_IS_PURCHASED];

        self.Titel = [aDecoder decodeObjectForKey:KEY_TITEL];
    }
    return self;
}

Утечка появляется в приборах на устройстве в этой строке:

self.Titel = [aDecoder decodeObjectForKey:KEY_TITEL];

KEY_TITEL is:

#define KEY_TITEL @"Titel"

и self.Titel:

@property (nonatomic, retain) NSString *Titel;

он синтезируется и освобождается в dealloc.

Я понятия не имею, откуда произошла утечка.Можете ли вы помочь мне, пожалуйста ...

спасибо xnz

Ответы [ 2 ]

3 голосов
/ 03 апреля 2011

Вы неверно истолковываете, что Инструменты говорят вам.

Это , а не говорит вам, где вы слили объект.

Это есть говорит вам, где вы создали объект, который в конечном итоге просочился.

Повторно проанализируйте данные из Инструментов соответственно.(Вы, вероятно, пропускаете вызов [Titel release] в своем методе -dealloc)

0 голосов
/ 23 ноября 2010

Вы присваиваете значение Titel до initWithCoder выполнения? Может в супер классе? Утечка, похоже, связана не с выполнением initWithCoder, а с предыдущим назначением.

...