ios - 返回基线状态后的堆增长

标签 ios xcode cocos2d-iphone

我试图理解为什么仪器会说以下代码中的指示行导致脏内存增长。返回基线状态后,我在第二次堆射击(基线之后)中得到了这个。谁能指出我的错误?

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;

最佳答案

该消息仅说明实例的创建位置,而不是泄漏的位置。

变量 baseSprite在其他地方保留而没有平衡释放。

对于 rt要么 CCRenderTexture返回一个未自动释放的对象,或者变量在其他地方保留而没有平衡释放。

如果您需要查看对象使用工具的保留、释放和自动释放发生的位置:

在仪器中运行,在分配中设置“记录引用计数”(您必须停止记录才能设置选项)。导致问题代码运行,停止记录,搜索感兴趣的 ivar,向下钻取,您将能够看到所有保留、释放和自动释放发生的位置。

enter image description here

关于ios - 返回基线状态后的堆增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298026/

相关文章:

iphone - 如何检测树形状的碰撞?

ios - 链接到 OSX 上的 iOS 模拟器二进制文件

ios - Apple Music 的 MPMediaItemPropertyArtwork 为空

ios - 为什么我不能在 XCode 4.1 中运行该项目?

ios - 无法在 Objective-C 项目中使用 RAMAnimatedTabBarController?

objective-c - 为什么在 Debug模式下使用 CCLog 和使用 print 时变量的值不同?

ios - UIImage 未在 Unwind Segue 上更新

ios - 无法从 POST 返回 JSON - 不兼容的 block 指针类型

iphone - 将批量XML数据更新并插入到我的SQLite数据库中

cocos2d-iphone - cocos2d : why convertToGL, 为什么在它的 body 之前 addChild CCSprite?