我有一个模型类来获取数据库信息,为此我在我的数据库类中有getInfo()
方法。在我的主类我有表视图显示表视图中的数据我想再次调用此数据库类方法获得,如果数据库中没有数据我在数据库的同一方法上从服务器上发出请求。为防止视图阻止,我正在调用performselectorInBackgroundThread()
。事情做得很好,但我的问题是,对于每个请求,我不是一个不同的后台线程。好吗?。我想创建一个单一的backgoundthread方法,我可以一次又一次地使用它。请告诉我一些代码。感谢
答案 0 :(得分: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
的更多信息