【发布时间】:2010-10-05 12:12:26
【问题描述】:
我创建了一个名为“DateTracker”的对象,它符合 NSCoding,因此它包含 encodeWithCoder 和 initWithCoder 方法。当我初始化它时,我调用以下内容:
DateTracker *currentTracker = [[DateTracker alloc] initFromFile];
initFromFile 方法如下所示:
- (id)initFromFile {
NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] attributesOfFileSystemForPath:filePath error:NULL]) {
NSData *data = [[NSMutableData alloc] initWithContentsOfFile:filePath];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
self = [unarchiver decodeObjectForKey:kDateDataKey];
[unarchiver finishDecoding];
[unarchiver release];
[data release];
}
return self;
}
但是当我尝试打电话时
[currentTracker release];
我的应用程序崩溃了。
当我使用性能工具运行应用程序以检查内存泄漏时,它会抱怨我没有释放此对象。
任何想法我做错了什么?
【问题讨论】:
标签: ios objective-c memory-management nscoding