2012-10-11 12 views
11

Ich habe anscheinend einen undichten UIDatePicker. Ich habe Speicherlecks bemerkt, um datePickerMode so einzustellen, dass Datum und Uhrzeit angezeigt werden. Aber ich versuche nur, das Datum anzuzeigen. Ich bin ziemlich sicher, dass dies ein Framework-Leck ist, denn wenn ich mehrere UIDatePicker-Eigenschaftszuweisungen auskommentiere, verschwinden die Lecks. Dieser Code leckt 1 CGColor Objekt und 1 UIDeviceRGBColor Objekt:UIDatePicker Lecks

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; 

durch die Linien Kommentierung Instruments als säumige berichtet, habe ich keine Lecks erhalten:

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; 

Ohne mindestens Datum-Modus gesetzt, die UIDatePicker ist wertlos. Hat jemand einen Workaround?

+1

Haben Sie das Leck auf dem Gerät überprüft? Oder nur am Simulator? Manchmal hat der Simulator einen Speicherleckfehler, der auf dem Gerät nicht existiert. – barley

+0

Verwenden Sie ARC? – Kevin

+0

In Bezug auf Workaround, wie schlecht ist das Leck? –

Antwort

2

Dieser Ansatz für mich gearbeitet:

Erstellen Sie die Datepicker in xib anstelle des programmatischen Ansatz. Stellen Sie dann im Bereich "Informationen" die Option "Modus" auf "Datum" ein.

+0

Ich nehme an, dies bedeutet, dass Sie das Problem zuvor hatten; und dass du das Problem dadurch gelöst hast. Wenn ja, in welcher Umgebung arbeiten Sie? Und was hast du probiert, dass das Problem vorher verursacht hat? – stephen

+0

Wurde für iPad iOS6 gebaut. Xcode 4.5.1 mit iOS6.0. Anfangs habe ich den datePicker programmatisch erstellt - was bedeutet, dass keine xib-Datei - dann habe ich den Modus auf diese Weise eingestellt: [_datePicker setDatePickerMode: UIDatePickerModeDate]; Ich habe Speicherverlust, wenn ich Instrumente einchecke. Ich habe die Datumsauswahl mit einem xib neu implementiert und anstatt den Modus wie zuvor einzustellen, setze ich ihn in die xib. Als ich es in Instruments überprüfte, gab es keine Lecks. – yoninja

+1

Ich kann auch bestätigen, dass, wenn Sie diese Attribute in IB setzen (statt programmatisch), der 'UIDatePicker' kein Leck in Instruments zeigt. Der 'UIDatePicker' wird jedoch undicht, wenn Sie die Attribute später über Code festlegen (selbst wenn der 'UIDatePicker' in IB erstellt wird). Dies ist eindeutig ein Leck im Framework-Code, und leider, bis Apple es behebt, gibt es keine gute Problemumgehung, außer zu akzeptieren, dass es undicht wird ...:/ –