2

次のコードで示された行がダーティメモリの増加を引き起こしているとインストルメントが言っている理由を理解しようとしています。ベースライン状態に戻った後、2番目のヒープショット(ベースライン後)でこれを取得しています。誰かが私のエラーを指摘できますか?

CCSprite *baseSprite = NULL;
CCSprite *mainHandSprite = NULL;
CCSprite *offHandSprite = NULL;
CCSprite *helmetSprite = NULL;
CCSprite *torsoSprite = NULL;
CCSprite *gloveSprite = NULL;
CCSprite *bootSprite = NULL;

NSString* afile = [NSString stringWithFormat:@"%@%i.PNG", file, num];
baseSprite = [[CCSprite alloc]initWithFile:afile];   /* HEAP GROWTH */
baseSprite.anchorPoint = ccp(0,0);

int w = baseSprite.textureRect.size.width;
int h = baseSprite.textureRect.size.height;

mainHandSprite = [self mainHandSprite:file And:num];
helmetSprite = [self headSprite:file And:num];
torsoSprite = [self torsoSprite:file And:num];
offHandSprite = [self shieldSprite:file And:num];
gloveSprite = [self gloveSprite:file And:num];
bootSprite = [self bootSprite:file And:num];

CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:w height:h]; /*HEAP GROWTH */

[rt begin];

[baseSprite visit];
if (torsoSprite)
    [torsoSprite visit];
if (helmetSprite)
    [helmetSprite visit];
if (offHandSprite)
    [offHandSprite visit];
if (bootSprite)
    [bootSprite visit];
if (gloveSprite)
    [gloveSprite visit];
if (mainHandSprite)
    [mainHandSprite visit];

[rt end];

CCTexture2D *aTex = rt.sprite.texture;
[aTex setAntiAliasTexParameters];

[baseSprite release];
baseSprite = NULL;
[mainHandSprite release];
mainHandSprite = NULL;
[torsoSprite release];
torsoSprite = NULL;
[helmetSprite release];
helmetSprite = NULL;
[offHandSprite release];
offHandSprite = NULL;
[gloveSprite release];
gloveSprite = NULL;
[bootSprite release];
bootSprite = NULL;

return aTex;
4

1 に答える 1

0

このメッセージは、インスタンスがリークされた場所ではなく、インスタンスが作成された場所を示しているだけです。

変数baseSpriteは、バランシングリリースなしで他の場所に保持されます。

は、自動リリースされていないオブジェクトを返すrtCCRenderTexture、変数がバランシングリリースなしで他の場所に保持されます。

オブジェクト使用インスツルメントの保持、リリース、および自動リリースが発生する場所を確認する必要がある場合は、次のようにします。

機器で実行し、[割り当て]で[参照カウントの記録]をオンに設定します(オプションを設定するには、記録を停止する必要があります)。問題のあるコードを実行し、記録を停止し、関心のあるivarを検索し、ドリルダウンすると、すべての保持、リリース、および自動リリースが発生した場所を確認できます。

ここに画像の説明を入力してください

于 2013-01-12T22:25:55.767 に答える