gpt4 book ai didi

iphone - 从 block 中返回整数

转载 作者:行者123 更新时间:2023-11-28 18:22:33 24 4
gpt4 key购买 nike

我正在尝试从我正在调用的 block 中返回一个整数。你可以在下面看到它:

-(NSInteger)globalRecord
{
__block NSInteger globalRecord = 0;

[GKLeaderboard loadLeaderboardsWithCompletionHandler:^(NSArray *leaderboards, NSError *error) {
GKLeaderboard *globalTaps = nil;
for (GKLeaderboard *lb in leaderboards) if ([lb.category isEqualToString:kGlobalLeaderboard]) globalTaps = lb;

[globalTaps loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error) {
if ([scores count] != 0)
{
GKScore *topScore = [scores objectAtIndex:0];
globalRecord = topScore.value;
//42 here
}

}];
}];

//0 here

return globalRecord;
}

所以我想从游戏中心的排行榜中获得最高分。我希望我的方法在收到分数后返回分数;但是,它不会返回我的分数。

在 block 中它识别分数,在本例中为 42,但是一旦我们到达 block 外并想要返回值,它就是 0。

最佳答案

loadLeaderboardsWithCompletionHandlerloadScoresWithCompletionHandler 都是异步工作的。来自 documentation :

When this method is called, it creates a new background task to handle the request. The method then returns control to your game. Later, when the task is complete, Game Kit calls your completion handler. ...

这意味着

[GKLeaderboard loadLeaderboardsWithCompletionHandler:...]

在完成 block 中将值分配给 globalRecord 之前返回。

关于iphone - 从 block 中返回整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404689/

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