我有一个coredatansmanagedObject子类,text叙事,它有一个nsstring,texturei类型的属性。该类实现nscoding协议方法:initwitcoder和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_collected
是一个nsarray,我将把它作为可转换属性放在我的模型中的一个实体中,并且
[dictionaryAction objectForKey:@"narrationURI"]
是以前在另一个上下文中自动释放的nsstring。
我怎么会在那个字符串上出现内存泄漏,而如果a使用注释行,则不会出现内存泄漏?
查看仪器时,自动释放的字符串似乎接收到
retain
从initwithstring(和
encodeWithCoder
两次呼叫)