iOS背景线程在打印到控制台时阻止UI

时间:2016-06-29 15:10:11

标签: ios objective-c multithreading firebase firebase-realtime-database

我必须从Firebase检索用户和用户数据列表。数据相对较大,所以我使用后台线程使用以下代码检索它:

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        FIRDatabaseReference *ref = [[FIRDatabase database] reference];
        [[ref child:@"users"] observeSingleEventOfType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) {
            for (FIRDataSnapshot *userSnapshot in [snapshot children]) {
                NSLog(@"key %@ and value %@", userSnapshot.key, userSnapshot.value);
            }
        }];
    });

块开始执行时出现问题。当输出打印到控制台时,将阻止与应用程序的任何用户交互。我尝试用 DISPATCH_QUEUE_PRIORITY_DEFAULT 替换 DISPATCH_QUEUE_PRIORITY_BACKGROUND ,但没有取得任何成功。

0 个答案:

没有答案