17 дек. 2013 г., 13:49 от QLag

Повторное использование представления в UIPickerView с iOS 7

РЕДАКТИРОВАТЬ 12-14-2015 : Об этой проблеме снова часто сообщают в iOS 7, iOS 8, iOS 9 .... Я думаю, что Apple больше не хочет использовать этот элемент управления и должна просто запретить нам использовать его вместо того, чтобы допустить такую серьезную ошибку

Я использую UIPickerView с пользовательскими представлениями, загруженными из Xib. Я использовал метод

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

от UIPickerViewDelegate, чтобы повторно использовать мои взгляды.

С iOS 6 мой UIPickerview работает отлично, и мои взгляды используются повторно.

Начиная с iOS 7, повторное использование View всегда равно нулю, поэтому мне нужно загрузить NIB для каждой строки (у меня 250 строк). Мои взгляды делают некоторые обработки, поэтому это может занять небольшую часть памяти, но x250 = большая утечка памяти.

Чтобы быть уверенным в том, в чем проблема, я сделал простой проект с 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;
}

В iOS 6 мои взгляды правильно используются повторно:

2013-12-17 14: 27: 25.395 EssaiReusedViewPicker [261: 907] Текущий индекс: 220 2013-12-17 14: 27: 25.396 EssaiReusedViewPicker [261: 907] ************** ***************************************** 2013-12-17 14:27: 25.397 EssaiReusedViewPicker [261: 907] Текущий индекс: 221 2013-12-17 14: 27: 25.404 EssaiReusedViewPicker [261: 907] ****************************** ******************************** 2013-12-17 14: 27: 25.407 EssaiReusedViewPicker [261: 907] Текущий индекс : 222 2013-12-17 14: 27: 25.409 EssaiReusedViewPicker [261: 907] ******************************** *********************** 2013-12-17 14: 27: 25.410 EssaiReusedViewPicker [261: 907] Текущий индекс: 223 2013-12-17 14: 27: 25.411 EssaiReusedViewPicker [261: 907] ****************************************** ************** 2013-12-17 14: 27: 25.412 EssaiReusedViewPicker [261: 907] Текущий индекс: 224 2013-12-17 14: 27: 25.414 EssaiReusedViewPicker [261: 907] ************************************************** ***** 2013-12-17 14: 27: 25.415 EssaiReusedViewPicker [261: 907] Текущий вход ndex: 225 2013-12-17 14: 27: 25.420 EssaiReusedViewPicker [261: 907] ******************************* ************************ 2013-12-17 14: 27: 25.424 EssaiReusedViewPicker [261: 907] Текущий индекс: 227 2013-12-17 14 : 27: 25.425 EssaiReusedViewPicker [261: 907]

Но с iOS 7 этоэто совершенно новая история ...

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

И что'S не так? iOS или ...? "

Ответы на вопрос (0)

10 янв. 2014 г., 08:27 от QLag

одтверждают ошибку:

Кажется, действительно есть разница между поведением в iOS 6 и 7.

Они просят меня сообщить об ошибке в инструменте отчетов об ошибках. Теперь просто дождитесь исправления :)

ВАШ ОТВЕТ НА ВОПРОС