Ios 当信号灯等待来自操作块的信号时,应用程序冻结

Ios 当信号灯等待来自操作块的信号时,应用程序冻结,ios,iphone,objective-c,afnetworking,Ios,Iphone,Objective C,Afnetworking,等待信号时信号量冻结我的应用程序 -(void) procceddQueue { dispatch_queue_t queue_qu = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_semaphore_t sema_qu = dispatch_semaphore_create(0); dispatch_async(queue_qu, ^{ for (QueueItem *item

等待信号时信号量冻结我的应用程序

-(void) procceddQueue {


 dispatch_queue_t queue_qu = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

 dispatch_semaphore_t sema_qu = dispatch_semaphore_create(0);

 dispatch_async(queue_qu, ^{

for (QueueItem *item in self.queueItems) {
    [[UploadService sharedInstance] buildPostRequestForItem:item :sema_qu];

}


    });

dispatch_semaphore_wait(sema_qu, DISPATCH_TIME_FOREVER);

[self updateQueue];
[self.queueItems removeAllObjects];
}

我将信号sema_qu变量发送到另一个类中的操作块。
我正在使用AFNetworking,我不确定是否可以使用AFNetworking实现信号量。

您是在buildPostRequestForItem::中发送信号量还是根本不发送信号量?例如,调度信号量信号(信号量);是这样的:发送信号量信号(sema_qu);为什么要在buildPostRequestForItem::中发送信号量,而不是在proceedQueue中?我对GCD没有太多经验,但我认为你的应用程序冻结了,因为你试图在另一个线程上发送信号;在proceedQueue中的for循环之后。这是我的第一个解决方案,但在这种情况下,信号量不等待信令。