2012-10-11 63 views
11

我似乎有一個泄漏的UIDatePicker。我注意到設置datePickerMode顯示日期和時間的內存泄漏。但是,我只是想顯示日期。我相當肯定這是一個框架泄漏,因爲當我註釋掉幾個UIDatePicker屬性分配時,泄漏消失了。此代碼泄漏1個CGColor對象,1個UIDeviceRGBColor對象:UIDatePicker泄漏

datePicker = [[UIDatePicker alloc] initWithFrame:[self detailViewRect]]; 


datePicker.datePickerMode = UIDatePickerModeDate; //leaks CGColor when setting this 
datePicker.hidden = NO; 
datePicker.timeZone = [NSTimeZone systemTimeZone]; //leaks UIDeviceRGBColor 
datePicker.maximumDate = [NSDate date];//leaks UIDeviceRGBColor 
datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

通過註釋工具報告違規行,我沒有得到任何泄漏:

datePicker = [[UIDatePicker alloc] initWithFrame:[self detailViewRect]]; 

//datePicker.datePickerMode = UIDatePickerModeDate; //leaks CGColor when setting this 
datePicker.hidden = NO; 
//datePicker.timeZone = [NSTimeZone systemTimeZone]; //leaks UIDeviceRGBColor 
//datePicker.maximumDate = [NSDate date];//leaks UIDeviceRGBColor 
datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth; 

如果沒有至少日期模式設置,的UIDatePicker是一文不值。有沒有人有解決方法?

+1

您是否檢查了設備上的泄漏?或只在模擬器上?有時候模擬器會有內存泄漏問題,這在設備上不存在。 – barley

+0

您使用ARC嗎? – Kevin

+0

關於解決方法,泄漏有多嚴重? –

回答

2

這種方式爲我工作:

廈門國際銀行中,而不是編程方式創建的DatePicker。然後,在屬性檢查器上,將模式設置爲日期。

+0

我認爲這意味着你之前有問題;並通過這樣做解決了問題。如果是這樣,你在什麼環境工作?你之前做了什麼導致了這個問題? – stephen

+0

正在爲iPad iOS6構建。 Xcode 4.5.1與iOS6.0。最初,我以編程方式創建了datePicker - 意思是沒有xib文件 - 然後我用這種方式設置模式:[_datePicker setDatePickerMode:UIDatePickerModeDate];當我簽入Instruments時,我有內存泄漏。我用xib重新實現了日期選擇器,而不是像之前那樣設置模式,而是將它設置在xib中。當我在樂器中檢查時,沒有泄漏。 – yoninja

+1

我也可以確認,如果你在IB(而不是編程)中設置這些屬性,'UIDatePicker'不會在Instruments中顯示泄漏。然而,如果稍後通過代碼設置所述屬性(即使在IB中創建了「UIDatePicker」),'UIDatePicker'也會泄漏。這顯然是框架代碼中的一個漏洞,不幸的是,除非Apple修復它,否則沒有一個好的解決方法,除非接受它將泄漏...:/ –