2014-01-24 3 views
-1

У меня есть класс модели, который извлекает информацию о базе данных, для этого у меня есть метод getInfo() в моем классе базы данных. В моем основном классе у меня есть табличное представление для отображения данных в виде таблицы. Я хочу вызвать этот метод класса базы данных и снова, если данных нет в базе данных, я запускаю запрос на сервере из того же метода базы данных. Чтобы предотвратить блокировку просмотра, я звоню performselectorInBackgroundThread(). Все идет хорошо, но мой вопрос в том, что я не являюсь другим фоновым потоком для каждого запроса. Это хорошо?. Я хочу создать один метод backgoundthread, который я могу использовать снова и снова. Прошу посоветовать мне с некоторым кодом. СпасибоКак использовать один метод backgroundthread, который вызывается снова и снова

ответ

0

Используйте GCD конечно!

Создание последовательной очереди отправки

dispatch_queue_t _queue ; 
_queue = dispatch_queue_create("Queue.database", DISPATCH_QUEUE_SERIAL); 

, когда вы хотите, чтобы сделать работу с базой данных, сделать это так, пример для запроса.

- (void)asyncQueryUserId:(NSString *)userId completeBlock:(void (^)(NSArray *))block 
{ 
    dispatch_sync(_queue, ^{ 
     // data base work 
     NSArray * users = queryDB(userId) ; 
     // after do the work and get the result 
     // you may want the result to continue your logic 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      block(users) ; 
     }) ; 
    }) ; 
} 

GCD Подробнее о

Смежные вопросы