gpt4 book ai didi

ios - 放入操作队列时网络操作不再完成

转载 作者:行者123 更新时间:2023-11-29 10:48:56 25 4
gpt4 key购买 nike

我有一些代码想添加到操作队列中,问题是代码在不在队列中时起作用,但一旦添加到队列中就没有任何反应。

这是我要添加到队列中的代码:

NSString* graphRequest = @"https://graph.facebook.com/redacted/picture?type=square";
FBRequest *fbRequest = [FBRequest requestForGraphPath: graphRequest];
[fbRequest startWithCompletionHandler:
^(FBRequestConnection *connection, id result, NSError *theError)
{
NSLog(@"Completed");
}];

当上面的代码被执行时,它的完成 block 会在几秒钟左右被调用。

但是,如果我尝试在操作队列中执行相同的代码,则永远不会调用完成 block :

NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperationWithBlock:
^{
NSString* graphRequest = @"https://graph.facebook.com/redacted/picture?type=square";
FBRequest *fbRequest = [FBRequest requestForGraphPath: graphRequest];
[fbRequest startWithCompletionHandler:
^(FBRequestConnection *connection, id result, NSError *theError)
{
NSLog(@"Completed");
}];
}];

使用这段代码没有任何反应。

最佳答案

问题是 FBRequest 出于某种原因只能在主线程上工作。你真的不应该太担心它,因为 startWithCompletionHandler 无论如何都是异步运行的。如果你真的想使用 NSOperationQueue,你将不得不向主线程发送一个 dispatch_async

希望对您有所帮助。

关于ios - 放入操作队列时网络操作不再完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com