Reutilizando la vista en UIPickerView con iOS 7

EDITAR 12-14-2015 : Este problema se reporta con frecuencia en iOS 7, iOS 8, iOS 9 ... Creo que Apple ya no quiere este control, y debería simplemente prohibirnos que lo usemos en lugar de dejar que un error tan importante

Utilizo un UIPickerView con vistas personalizadas cargadas desde un Xib. Estaba usando el metodo

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

de UIPickerViewDelegate para reutilizar mis vistas.

Con iOS 6, mi UIPickerview funciona perfectamente y mis vistas se reutilizan.

Desde iOS 7, el reusingView siempre es nulo, así que necesito cargar el NIB para cada fila (tengo 250 filas). Mis vistas están realizando algunos tratamientos, por lo que puede ocupar una pequeña parte de la memoria, pero x250 = gran pérdida de memoria

Para estar seguro de cuál es el problema, hice un proyecto simple con un UILabel:

-(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;
}

Con iOS 6, mis vistas son reutilizadas correctamente:

2013-12-17 14: 27: 25.395 EssaiReusedViewPicker [261: 907] Índice actual: 220 2013-12-17 14: 27: 25.396 EssaiReusedViewPicker [261: 907] *************** ***************************************** 2013-12-17 14:27: 25.397 EssaiReusedViewPicker [261: 907] índice actual: 221 2013-12-17 14: 27: 25.404 EssaiReusedViewPicker [261: 907] *********************** ******************************** 2013-12-17 14: 27: 25.407 EssaiReusedViewPicker [261: 907] inndex actual : 222 2013-12-17 14: 27: 25.409 EssaiReusedViewPicker [261: 907] ******************************** *********************** 2013-12-17 14: 27: 25.410 EssaiReusedViewPicker [261: 907] índice actual: 223 2013-12-17 14: 27: 25.411 EssaiReusedViewPicker [261: 907] ***************************************** ************** 2013-12-17 14: 27: 25.412 EssaiReusedViewPicker [261: 907] Índice actual: 224 2013-12-17 14: 27: 25.414 EssaiReusedViewPicker [261: 907] *************************************************** ***** 2013-12-17 14: 27: 25.415 EssaiReusedViewPicker [261: 907] Actual en índice: 225 2013-12-17 14: 27: 25.420 EssaiReusedViewPicker [261: 907] ******************************* ************************ 2013-12-17 14: 27: 25.424 EssaiReusedViewPicker [261: 907] índice actual: 227 2013-12-17 14 : 27: 25.425 EssaiReusedViewPicker [261: 907]

Pero con iOS 7, es una historia completamente nueva ...:

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

¿Así que qué hay de malo? iOS o ...?

Respuestas a la pregunta(1)

Su respuesta a la pregunta