使用initWithCoder进行NSCoding泄漏问题

时间:2010-11-23 10:21:50

标签: objective-c ipad memory-leaks nscoding

我在以下代码中有泄漏:

-(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 个答案:

答案 0 :(得分:3)

你错误地解释了仪器告诉你的内容。

告诉您泄漏对象的位置。

告诉你在哪里创建了一个最终泄露的对象。

相应地重新分析来自Instruments的数据。 (您可能错过[Titel release]方法中的-dealloc来电

答案 1 :(得分:0)

您是否在执行Titel之前为initWithCoder分配了值?也许在超级班? 泄漏似乎与initWithCoder执行没有关联,而是与之前的任务相关联。