Проблема утечки NSCoding с initWithCoder

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

-(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 - это:

#define KEY_TITEL @"Titel"

и self.Titel это:

@property (nonatomic, retain) NSString *Titel;

это синтез, и это выпущено в dealloc.

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

спасибо xnz

2 ответа

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

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

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

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

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

Другие вопросы по тегам