Отмена загрузки данных в uitableview в iphone

В моем приложении у меня есть большое количество, около 70000 записей для загрузки в виде таблицы. Загрузка занимает много времени, минут десять. Поскольку он блокирует основной поток пользовательского интерфейса, я не могу вернуться назад или получить доступ к каким-либо кнопкам. Есть ли какой-либо альтернативный способ, например использование отдельного потока для этой цели или какой-либо альтернативный подход? Пожалуйста, покажи мне какой-нибудь способ.

Спасибо, Винод.


person Atom    schedule 31.05.2011    source источник


Ответы (1)


Используйте NSThread.

Ваш код будет выглядеть примерно так:

NSThread *thread = [NSThread initWithTarget:self selector:@selector(loadData:) object:nil];
[thread start];
[thread release];

-(void) loadData:(id) obj {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    // load data
    [pool release];
}

Если вам нужно что-то сделать в основном потоке пользовательского интерфейса из вновь созданного потока, используйте метод performSelectorOnMainThread:withObject для текущего объекта.

person csano    schedule 31.05.2011
comment
Загрузка таблицы, которая блокирует основной поток. Есть ли альтернативный способ отменить загрузку в середине? Спасибо ! - person Atom; 31.05.2011
comment
Да, пока у вас есть ссылка на поток, вы можете отменить его, вызвав метод cancel. Похоже, вы пытаетесь сразу передать все данные в поток пользовательского интерфейса. Вы пробовали разделить данные? Пользователь не сможет прокрутить все 70 000 строк одновременно, не так ли? - person csano; 31.05.2011