首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Objective-C NSString可转换属性内存泄漏

Objective-C NSString可转换属性内存泄漏
EN

Stack Overflow用户
提问于 2010-07-17 19:17:18
回答 1查看 314关注 0票数 0

我有一个CoreData NSManagedObject子类TextNarration,它有一个NSString类型的属性textURI。该类以如下方式实现NSCoding协议方法: initWithCoder和encodeWithCoder:

代码语言:javascript
复制
    - (id) initWithCoder: (NSCoder *)coder
{
    if (self = [super init])
    {
        self.textURI = [coder decodeObjectForKey:@"textURI"];
    }
    return self;
}

- (void) encodeWithCoder: (NSCoder *)coder
{
    [coder encodeObject:textURI forKey:@"textURI"];

}

当我创建一个新实例时,我会这样做:

代码语言:javascript
复制
TextNarration * textNarr = [[TextNarration alloc] init];
NSString * tURI = [[NSString alloc] initWithString:[dictionaryAction objectForKey:@"narrationURI"]];
//NSString * tURI = [[NSString alloc] initWithString:@"aspa"];
textNarr.textURI = tURI;
[action_collected addObject:textNarr];
[tURI release];
[textNarr release];

其中action_collected是一个NSArray,我将把它作为可转换属性放在我的模型中的一个实体中,而[dictionaryAction objectForKey:@"narrationURI"]是之前在另一个上下文中自动发布的NSString。为什么我在字符串上得到内存泄漏,而如果使用注释行,则没有内存泄漏?查看仪器,自动释放的字符串似乎收到了来自initWithString的retain ( encodeWithCoder被调用了两次)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-18 00:25:42

答案很简单,该类不是NSManagedObject的子类,因此它需要一个适当的dealloc方法来释放属性。笨手笨脚的我没有及时注意到

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

https://stackoverflow.com/questions/3271258

复制
相关文章

相似问题

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