gpt4 book ai didi

iphone - Cocos2d : usage of references vs getChild performance

转载 作者:行者123 更新时间:2023-11-29 13:34:25 24 4
gpt4 key购买 nike

我不确定哪种方法会给我带来更好的性能:

我有一个 GameScene 类,我倾向于在其中分配一个对象,然后使用标签将它们作为子对象添加到类中。在我研究的许多示例中都使用了这种方法,但我不确定当我需要频繁访问子对象时它是否是最好的(例如更新 GameScene 中的分数标签)。在这些情况下,我想知道在性能方面声明一个指向那些经常使用的对象的指针并使用它来访问对象而不是通过标签获取子对象是否是一种更好的方法。

是使用 getChildByTag 还是通过指针访问这些对象更有效?

As example I provide a label that I frequently update during the game, e.g. it could be the score label:

@interface GameScene : CCLayer
{
CCLabelTTF *frequentlyUsedLabel;
}

//Implementation

-(id) initWithId:(int)sceneId
{
if ((self = [super init]))
{
//..code
frequentlyUsedLabel = [CCLabelTTF labelWithString:@"Hearths:" fontName:@"Arial" fontSize:20];
[self addChild:frequentlyUsedLabel];
}
}

最佳答案

  1. 编写易于维护的代码。
  2. 任何值得优化的东西都值得衡量。

时间使用这两种方法渲染帧需要多长时间。问问自己这是否重要。

额外的内存开销有点难以衡量(特别是,Cocos2D 可能使用了一个聪明的分配器,如果您的 CCLayer 子类没有声明任何额外的 ivars,它会更有效)。我认为 4 个字节是 单个像素 使用的内存量。

对于 UIKit,我个人发现使用 ivars 比担心标签的唯一性要容易得多(尤其是在不同应用程序中重用代码或在多个地方使用 View 时)。对于 ARC 尤其如此,因为您不再需要担心 getters/setters/retain/release。

关于iphone - Cocos2d : usage of references vs getChild performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10981801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com