Objective-C GameKit嵌套阻止内存泄漏

时间:2013-01-10 21:11:15

标签: objective-c memory-management memory-leaks objective-c-blocks gamekit

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

0 个答案:

没有答案