我必须保留UIDatePicker模态视图中的日期吗?

时间:2009-09-23 22:29:45

标签: iphone objective-c memory-management nsdate uidatepicker

我正在从我的UIDatePicker视图中崩溃,我认为这是因为我没有保留选择日期的选择器。谁能告诉我这是否正确?

我有一个用于选择toDatefromDate范围的模态视图。这些值将被传递到模态视图中,并在视图被解除时从视图中删除。 视图有一个UIDatePicker和一个分段按钮,用于在to和from日期之间切换。

每次分段控制开关时,我都会将选择器日期设置为匹配日期或从日期开始。当选择器值更改时,我会相应地更新to或from日期。在这些日期之间进行了几次切换后,视图崩溃了。

我不会保留选择日期的选择器,所以我猜我何时将选择器的值设置为toDatefromDate toDate正在释放所以当我将选择器切换回toDate时,它会崩溃。

另外,要在视图外使用选择器中的选定日期,是否需要保留日期,因为选择器将与日期一起发布?

这对任何人都有意义吗?

2 个答案:

答案 0 :(得分:1)

如果你需要从UIDatePicker中获取日期值,如果你要在函数范围之外使用它(例如,通过多个AutoreleasePool循环),你确实需要保留一个副本。

从UIDatePicker 获取日期将保留一个引用,但它将自动释放,因此只有在自动释放池被销毁之后才有效。

记得在完成参考后发布您的参考资料。

只需在函数内暂时使用它,您就不需要像上面所述那样保留它。

答案 1 :(得分:0)

为什么不将viewvcontroller或其他类的属性设置为使用日期:

self.date = date;

使用retain属性将日期定义为@property。这样你就可以在应用程序的其他地方使用日期,并且当你通过runloop时它不会被自动释放。