例如,在GKScore
的{{1}}(documentation)中,假设您致电
reportScoreWithCompletionHandler
在哪个线程中调用完成处理程序:主线程,与[score reportScoreWithCompletionHandler:^(NSError *error) {
// do some stuff that may be thread-unsafe
}];
相同的线程被调用,或者是另一个线程(可能是实际得分报告完成的线程)?
换句话说,在完成处理程序中完成的工作是否需要是线程安全的(例如,它在什么线程中完成并不重要?)
答案 0 :(得分:6)
实际上并不重要。
如果你需要在主线程中运行你的完成,只需将它发送到主线程:
[score reportScoreWithCompletionHandler:^(NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
// do your stuff here
});
}];
答案 1 :(得分:0)
没有用于完成处理程序的特定线程,苹果documentation表示它将是辅助线程(绝对不是主线程)。您可以使用DispatchQueue访问iOS中的不同线程。