Проблема утечки 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
выполнение, но для предыдущего назначения.