Я не уверен в том, каком подход даст мне лучшую производительность:Cocos2d: использование ссылок против производительности GetChild
У меня есть класс 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];
}
}
Знаете ли вы, что вам нужно улучшить производительность? Если вы этого не сделаете, придерживайтесь своего шаблона, улучшите читаемость кода, таким образом, ремонтируемость. Ответ на ваш вопрос, как указано: getChildByTag гарантированно занимает больше времени, чем использование указателя. Таким образом, речь не идет о том, улучшится ли ваша производительность, но «насколько», следовательно, мое вступительное замечание: если вам не нужно улучшаться, не изменяйте свой код. – YvesLeBorg
Прохладно, дело в том, что мне нужно часто обращаться к этим ярлыкам (почти каждый другой фрейм), и по этой причине я думал, что ответ на «насколько часто» будет «очень часто», но я не был уверен и хотел спросить вас, ребята, если у вас есть похожие подходы-проблемы-переживания. Но спасибо за ваш ответ, это помогает, поскольку я не был уверен, что getChildByTag был медленнее! – mm24