首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >initWithCoder的NSCoding泄漏问题

initWithCoder的NSCoding泄漏问题
EN

Stack Overflow用户
提问于 2010-11-23 18:21:50
回答 2查看 1.1K关注 0票数 1

我在以下代码中有一个漏洞:

代码语言:javascript
复制
-(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;
}

泄漏出现在设备上的仪器中的那条线路上:

代码语言:javascript
复制
self.Titel = [aDecoder decodeObjectForKey:KEY_TITEL];

KEY_TITEL是:

代码语言:javascript
复制
#define KEY_TITEL @"Titel"

self.Titel是:

代码语言:javascript
复制
@property (nonatomic, retain) NSString *Titel;

它是合成的,它被释放为dealloc。

我一点也不知道泄密是从哪里来的。你能帮帮我吗?

谢谢xnz

EN

回答 2

Stack Overflow用户

发布于 2011-04-03 14:55:52

你曲解了Instruments告诉你的东西。

而不是告诉你你在哪里泄漏了一个对象。

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

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

票数 3
EN

Stack Overflow用户

发布于 2010-11-23 22:06:22

initWithCoder执行之前,你给Titel赋值了吗?也许在超级课堂上?泄漏似乎与initWithCoder的执行无关,而是与之前的赋值有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4255007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档