我在 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];
最佳答案
Does unarchiveObjectWithData:cacheData return me an autoreleased object? whose responsible to release the object return from unarchiveObjectWithData:cacheData?
只要记住NARC即可。如果您调用的方法以 new
、alloc
、retain
或 copy
开头,那么您拥有任何对象被返回并必须释放它。如果没有,则会自动释放。
关于Objective-c - initWithCoder 和内存管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10525401/