Wiederverwenden der Ansicht in UIPickerView mit iOS 7

EDIT 12-14-2015 : Dieses Problem wird auch unter iOS 7, iOS 8, iOS 9 häufig gemeldet. Ich denke, Apple möchte dieses Steuerelement nicht mehr verwenden und sollte es uns nur verbieten, es zu verwenden, anstatt einen so großen Fehler zuzulassen

Ich verwende eine UIPickerView mit benutzerdefinierten Ansichten, die von einer Xib geladen werden. Ich habe die Methode angewendet

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row 
    forComponent:(NSInteger)component reusingView:(UIView *)view

von UIPickerViewDelegate, um meine Ansichten wiederzuverwenden.

Unter iOS 6 funktioniert mein UIPickerview einwandfrei und meine Ansichten werden wiederverwendet.

Seit iOS 7 ist die wiederverwendbare Ansicht immer gleich null, daher muss ich die NIB für jede Zeile laden (ich habe 250 Zeilen). Meine Ansichten machen einige Behandlungen, so dass es einen kleinen Teil des Speichers nehmen kann, aber x250 = großer Speicherverlust.

Um sicherzugehen, was das Problem ist, habe ich ein einfaches Projekt mit einem UILabel durchgeführt:

-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

    UILabel *label = (UILabel *)view;
    if(view == nil) {
        label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, pickerView.frame.size.width, 76)];
    }
    else {
        NSLog(@"*******************************************************");
    }
    NSLog(@"Current inndex : %i",row);
    label.text = [NSString stringWithFormat:@"TITRE %i", row];
    return label;
}

Unter iOS 6 werden meine Ansichten korrekt wiederverwendet:

2013-12-17 14: 27: 25.395 EssaiReusedViewPicker [261: 907] Aktueller Index: 220 2013-12-17 14: 27: 25.396 EssaiReusedViewPicker [261: 907] *************** **************************************** 2013-12-17 14:27: 25.397 EssaiReusedViewPicker [261: 907] Aktueller Index: 221 17.12.2013 14: 27: 25.404 EssaiReusedViewPicker [261: 907] ************************ ******************************* 2013-12-17 14: 27: 25.407 EssaiReusedViewPicker [261: 907] Aktueller Index : 222 2013-12-17 14: 27: 25.409 EssaiReusedViewPicker [261: 907] ******************************** ********************** 2013-12-17 14: 27: 25.410 EssaiReusedViewPicker [261: 907] Aktueller Index: 223 2013-12-17 14: 27: 25.411 EssaiReusedViewPicker [261: 907] ***************************************** ************* 2013-12-17 14: 27: 25.412 EssaiReusedViewPicker [261: 907] Aktueller Index: 224 2013-12-17 14: 27: 25.414 EssaiReusedViewPicker [261: 907] *************************************************** ***** 2013-12-17 14: 27: 25.415 EssaiReusedViewPicker [261: 907] Aktuell in ndex: 225 2013-12-17 14: 27: 25.420 EssaiReusedViewPicker [261: 907] ******************************* *********************** 2013-12-17 14: 27: 25.424 EssaiReusedViewPicker [261: 907] Aktueller Index: 227 2013-12-17 14 : 27: 25.425 EssaiReusedViewPicker [261: 907]

Aber mit iOS 7 ist es eine brandneue Geschichte ...:

2013-12-17 14:36:09.555 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.557 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.557 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.560 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.560 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.561 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.563 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.563 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.564 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.566 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.567 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.567 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.568 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:09.568 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:09.569 EssaiReusedViewPicker[7209:70b] Current inndex : 0
2013-12-17 14:36:09.569 EssaiReusedViewPicker[7209:70b] Current inndex : 1
2013-12-17 14:36:14.172 EssaiReusedViewPicker[7209:70b] Current inndex : 3
2013-12-17 14:36:14.350 EssaiReusedViewPicker[7209:70b] Current inndex : 3
2013-12-17 14:36:14.351 EssaiReusedViewPicker[7209:70b] Current inndex : 2
2013-12-17 14:36:14.367 EssaiReusedViewPicker[7209:70b] Current inndex : 4
2013-12-17 14:36:14.667 EssaiReusedViewPicker[7209:70b] Current inndex : 4
2013-12-17 14:36:14.668 EssaiReusedViewPicker[7209:70b] Current inndex : 3
2013-12-17 14:36:14.700 EssaiReusedViewPicker[7209:70b] Current inndex : 5
2013-12-17 14:36:15.067 EssaiReusedViewPicker[7209:70b] Current inndex : 5
2013-12-17 14:36:15.067 EssaiReusedViewPicker[7209:70b] Current inndex : 4
2013-12-17 14:36:15.083 EssaiReusedViewPicker[7209:70b] Current inndex : 6
2013-12-17 14:36:15.367 EssaiReusedViewPicker[7209:70b] Current inndex : 6
2013-12-17 14:36:15.367 EssaiReusedViewPicker[7209:70b] Current inndex : 5
2013-12-17 14:36:15.400 EssaiReusedViewPicker[7209:70b] Current inndex : 7
2013-12-17 14:36:16.416 EssaiReusedViewPicker[7209:70b] Current inndex : 7

Also, was ist falsch? iOS oder ...?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage