我的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库引起的。我错过了什么吗?有没有人遇到过类似的东西?