さて、私はイベントと呼ばれるこのクラスを手に入れました。
これには、NSDateであるeventDateというプロパティがあります。イベントの日付から何年経過したかを返すメソッドを作成しました。
- (double)yearsSinceEvent {
double years;
// Get the system calendar
NSCalendar *sysCalendar = [NSCalendar currentCalendar];
// Create the NSDates
NSDate *date1 = self.eventDate;
NSDate *date2 = [NSDate date];
// Get conversion to months, days, hours, minutes
unsigned int unitFlags = NSYearCalendarUnit;
NSDateComponents *conversionInfo = [sysCalendar components:unitFlags fromDate:date1 toDate:date2 options:0];
years = [conversionInfo year];
[date1 release];
[date2 release];
return years;
}
テーブルビューセルを構成するときは、次のようにします。
cell.textLabel.text = [[events objectAtIndex:indexPath.row] name];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%d year's ago", [events objectAtIndex:indexPath.row] yearsSinceEvent]];
しかし、これはこのエラーをスローします:
*** __NSAutoreleaseFreedObject():以前に割り当て解除されたオブジェクト(0x595bda0)のリリースは無視されます
私はここで何が間違っているのですか?
date1とdate2をリリースしない場合、エラーは発生しませんが、メソッドは0を返します。
代わりにセル構成メソッドでyearsSinceEventコードを実行し、日付1と日付2をリリースしない場合は機能します。
これはどのようにすればよいですか?