我在以下代码中有一个漏洞:
-(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
发布于 2011-04-03 14:55:52
你曲解了Instruments告诉你的东西。
是而不是告诉你你在哪里泄漏了一个对象。
它会告诉你在哪里创建了一个最终泄露的对象。
相应地重新分析来自Instruments的数据。(您的-dealloc方法中可能缺少一个[Titel release]调用)
发布于 2010-11-23 22:06:22
在initWithCoder执行之前,你给Titel赋值了吗?也许在超级课堂上?泄漏似乎与initWithCoder的执行无关,而是与之前的赋值有关。
https://stackoverflow.com/questions/4255007
复制相似问题