我的 iPhone 游戏包含以下代码:
[friendLeaderboardRequest_ loadScoresWithCompletionHandler:^(NSArray *scores, NSError *error)
{
friendLeaderboardRequest_ = nil;
if (error)
return;
NSMutableArray* playerIDs = [NSMutableArray array];
for (GKScore* score in scores)
[playerIDs addObject:score.playerID];
[GKPlayer loadPlayersForIdentifiers:playerIDs withCompletionHandler:^(NSArray* players, NSError* error)
{
...
}];
}];
嵌套块调用泄漏 3 个__NSCFString
对象。每次,负责的框架都是-[NSXPCDecoder _initWithRootXPCObject:]
。嵌套调用会导致泄漏。我已将调用移到第一个块之外,并[NSArray arrayWithObject:[GKLocalPlayer localPlayer].playerID]
作为玩家 ID 数组和一个空块作为块传递,并且没有泄漏。我在第一个块中尝试了相同的虚拟调用,泄漏再次发生。
基于这些测试,我假设泄漏是由 Foundation 库引起的。我错过了什么吗?有没有人遇到过类似的事情?