我有一些代码要添加到操作队列中,问题是代码函数何时不在队列中,但一旦添加到队列中就没有任何反应。
以下是我要添加到队列中的代码:
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");
}];
执行上面的代码时,会在几秒钟左右调用完成块。
但是,如果我尝试在操作队列中执行相同的代码,则永远不会调用完成块:
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");
}];
}];
使用此代码没有任何反应。
答案 0 :(得分:2)
问题是FBRequest
仅出于某种原因才能在主线程上运行。你真的不应该太担心它,因为startWithCompletionHandler
无论如何都会运行异步。如果你真的想使用NSOperationQueue
,你必须要dispatch_async
到主线程。
希望有所帮助。