Objective-c - initWithCoder和内存管理?

时间:2012-05-09 23:08:44

标签: objective-c ios nskeyedarchiver nscoding

我在initWithCoder方法中遇到了泄漏。

unarchiveObjectWithData:cacheData会返回一个自动释放的对象吗?谁负责从unarchiveObjectWithData:cacheData?

中释放对象
@implementation MyObject
@synthesize something = _something;

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

- (void)dealloc
{
        self.something = nil;
        [super dealloc];
}

@end

这是我从文件中读取对象的地方

MyObject *myObject = [NSKeyedUnarchiver unarchiveObjectWithData:cacheData];

1 个答案:

答案 0 :(得分:1)

  

unarchiveObjectWithData:cacheData会返回一个自动释放的对象吗?谁负责从unarchiveObjectWithData:cacheData?

中释放对象

记住 NARC 。如果您调用的方法以newallocretaincopy开头,那么您拥有任何返回的对象并且必须将其释放。如果没有,那么它是自动释放的。