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];
アプリがクラッシュします。
パフォーマンスツールを使用してアプリを実行してメモリリークをチェックすると、このオブジェクトを解放していないというメッセージが表示されます。
私が間違っていることについて何か考えはありますか?