私の 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 ライブラリが原因であると推測しています。何か不足していますか?誰かが似たようなことに遭遇しましたか?