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

Iphone Objective-C NSString可转换属性内存泄漏,iphone,memory-management,core-data,memory-leaks,nsstring,Iphone,Memory Management,Core Data,Memory Leaks,Nsstring,我有一个CoreData NSManagedObject子类TextAttraction,它有一个NSString类型的属性textURI。该类通过以下方式实现NSCoding协议方法:initWithCoder和encodeWithCoder: - (id) initWithCoder: (NSCoder *)coder { if (self = [super init]) { self.textURI = [coder decodeObjectForK

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

    - (id) initWithCoder: (NSCoder *)coder
{
    if (self = [super init])
    {
        self.textURI = [coder decodeObjectForKey:@"textURI"];
    }
    return self;
}

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

}
创建新实例时,我会执行以下操作:

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\u collected
是一个NSArray,我将作为可转换属性放入模型中的实体中,
[dictionaryAction objectForKey:@“AnnotationUri”]
是一个NSString,它以前在另一个上下文中自动释放。 如果使用注释行,为什么该字符串会出现内存泄漏,而没有内存泄漏?
从仪器上看,自动释放的字符串似乎从initWithString接收到一个
retain
(并且
encodeWithCoder
被调用两次)

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