我创建了一个符合 NSCoding 的名为“DateTracker”的对象,因此它包含 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];
我的应用程序崩溃。
当我使用性能工具运行应用程序来检查内存泄漏时,它抱怨我没有释放这个对象。
任何想法我做错了什么?