TableView - 从详细信息视图返回时iVar重置

时间:2010-04-27 13:53:24

标签: iphone objective-c xcode

任何人都知道在将详细信息视图推送到导航堆栈的同时保留我的TableView iVars需要做些什么?

我有一个数组和一个定义为iVars的日期,数组被保留,而日期不是。我检查了某个地方是否隐藏了一个自动修复程序但是没有明显的自动修复程序。

属性定义为非原子,保留。

我使用自定义NSDate类别方法来确定阶段的具体日期。这些使用NSDateComponents,NSRange和NSCalendar,例如:

- (NSDate *)lastDayOfMonth: {
 NSCalendar *tmpCal = [NSCalendar currentCalendar];
 NSDateComponents *tmpDateComponents = [tmpCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSEraCalendarUnit | NSWeekCalendarUnit | NSWeekdayOrdinalCalendarUnit fromDate:self];
 NSRange tmpRange = [tmpCal rangeOfUnit:NSDayCalendarUnit inUnit:NSMonthCalendarUnit forDate:[tmpCal dateFromComponents:tmpDateComponents]];

 [tmpDateComponents setDay:tmpRange.length];
 [tmpDateComponents setHour:23];
 [tmpDateComponents setMinute:59];
 [tmpDateComponents setSecond:59];
 return [[NSCalendar currentCalendar] dateFromComponents:tmpDateComponents];
}
他们可能是某种原因吗?

3 个答案:

答案 0 :(得分:0)

dateFromComponents:返回自动释放的NSDate。

您的日期ivar应由设定者保留。你声明它是这样的吗并使用setter?

@property (nonatomic, retain) NSDate* myDate;

答案 1 :(得分:0)

  • 你是@synthesize日期访问者,还是自己写?如果您自己编写了setter,请确保调用retain(我有时会忘记这样做)
  • 推送的视图控制器是否可以访问它,并意外释放它?

答案 2 :(得分:0)

我想我找到了它,当我调用子视图时,我使用一种方法来生成视图并将其传递给数据对象。

如果我说得对,那么当子视图返回主程序时,子视图会释放该参数,这就是日期丢失的原因。在子视图调用中保留对象可以完成这项工作。