我想从GameCenter下载分数,但我不知道在下载分数时如何等待。当我运行此代码时,它返回null。我认为,当[leaderboardRequest loadScoresWithCompletionHandler: ...
下载分数时,该方法必须等待。
- (NSString*) getScore: (NSString*) leaderboardID
{
__block NSString *score = nil;
GKLeaderboard *leaderboardRequest = [[GKLeaderboard alloc] init];
if (leaderboardRequest != nil)
{
leaderboardRequest.identifier = leaderboardID;
[leaderboardRequest loadScoresWithCompletionHandler: ^(NSArray *scores, NSError *error) {
if (error != nil)
{
NSLog(@"%@", [error localizedDescription]);
}
if (scores != nil)
{
int64_t scoreInt = leaderboardRequest.localPlayerScore.value;
score = [NSString stringWithFormat:@"%lld", scoreInt];
}
}];
}
return score;
}
答案 0 :(得分:0)
当操作完成时(在另一个线程上),将调用完成处理程序中的代码。
您有几个选项,您可以将分数存储在某处并发布通知以通知主线程操作已完成。