2009-09-23 18 views
0

我得到我的UIDatePicker視圖崩潰,我認爲這是因爲我不保留選擇選擇日期。誰能告訴我,如果這可能是正確的?我必須保留來自UIDatePicker模態視圖的日期嗎?

我有一個選擇toDatefromDate範圍的模態視圖。這些值被傳遞到模態視圖中,並在視圖被解散時從視圖中取出。 該視圖有一個UIDatePicker和一個分段按鈕,用於在日期和日期之間切換。

每次分段控制開關時,我都會將採摘日期設置爲匹配日期或開始日期。當選擇器值發生變化時,我相應地更新日期或日期。在這些日期之間幾次切換後,視圖崩潰。

我不持有采摘選擇的日期,所以當我設置爲從toDate的採摘日期爲fromDatetoDate值被釋放,所以當我切換選擇器回toDate它要我猜墜毀。

同樣使用從視圖外部的選擇器中選擇的日期將需要保留日期,因爲選擇器將隨着日期一起被釋放?

這對任何人都有意義嗎?

回答

1

如果您需要從UIDatePicker獲取日期值,那麼如果您在功能範圍之外(比如在多個AutoreleasePool週期中)使用它,則確實需要保留副本。

從UIDatePicker獲取日期保留一個引用,但它會自動釋放,因此有效直到自動釋放池被銷燬纔有效。

一旦你完成了它,記得發佈你的參考。

只需在函數內暫時使用它,您將不需要如上所述保留它。

0

你爲什麼不你viewvcontroller或其他類的屬性設置爲你約會開始使用:

self.date =日期;

將日期定義爲帶有retain屬性的@property。這樣,你應該可以在你的應用程序的其他地方使用日期,並且當你通過runloop時它不會被自動釋放。

+0

如果我這樣做,然後說self.date = [選擇器日期];那麼self.date就不會指向pikers的日期,並且在選擇日期被設置爲另一個日期時被釋放。即[picker setDate:date2]; – McKay 2009-09-23 23:19:51

相關問題