1

我在以下代码中有泄漏:

-(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 中释放。

我不知道泄漏是从哪里来的。你能帮帮我吗...

谢谢xz

4

2 回答 2

3

您误解了 Instruments 告诉您的内容。

没有告诉你你在哪里泄露了一个对象。

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

相应地重新分析来自 Instruments 的数据。(您的方法[Titel release]中可能缺少一个调用-dealloc

于 2011-04-03T06:55:51.963 回答
0

你有没有在执行Titel前分配一个值initWithCoder?也许在超级班?泄漏似乎与initWithCoder执行无关,而是与先前的分配有关。

于 2010-11-23T14:06:21.787 回答