我試圖從我打電話的塊中返回一個整數。你可以在下面看到它:從塊返回整數
-(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;
}
所以我想從我的排行榜在遊戲中心獲得最高分。我希望我的方法在收到分數後返回分數,但不會返回我的分數。
在這個塊中,它識別得分,在這種情況下,42,但是一旦我們到達塊的外面,並想返回值0。
我真的不知道該怎麼做。任何幫助將不勝感激,謝謝。
+1用於提出解決方案,而不是像我一樣指出問題。兩種說法:1)__block變量不再需要。 2)完成處理程序可能在不同的線程上調用。要更新UI組件,應該使用'performSelectorOnMainThread:...'或類似的方法。 –
你是對的globalRecordRetrieved應該調用performSelectorOnMainThread,或者他可以切換到'dispatch_async(dispatch_get_main_queue(),^ {/ *做一些UI安全的東西* /});'' –