1

我有一个名为 _label 的成员作为类中的 ivar 成员:

@interface CCHelloWorldLayer : CCLayer
{
  CCLabelBMFont *_label;
}

在另一个代码块中:用这一行初始化:

_label = [CCLabelBMFont labelWithString:@"Testing " fntFile:fntName];

问题是这样的:如果我想修改它的文本我应该怎么做?我没有看到任何方法,例如:

[_label setString:@"Well.there is no such a method"];

如果我做

_label = [CCLabelBMFont labelWithString:@"Testing " fntFile:fntName];

_label = [CCLabelBMFont labelWithString:@"Well.there is no such a method"
         fntFile:fntName];

第一次内存分配是自动释放吗?重复调用 labelWithString 方法是否安全?(注意:我不在测试项目中使用 ARC。我不会。)

感谢您的建议

4

2 回答 2

2

有一种setString方法,但它似乎是“私有的”。该+labelWithString方法确实创建了一个自动释放对象并且可以重复使用。看起来它创建了一个纹理,因此您希望每次都创建一个新纹理(而不是尝试修改它)。

不过,一般来说,如果您希望自动释放的对象继续存在,您应该在完成后继续使用retainrelease

于 2013-02-03T15:22:07.287 回答
2
[_label setString:@"Well.there is no such a method"];

这个方法是存在的,你可以这样称呼它。试试看,它有效。

该方法不是在类中声明的,而是在 CCLabelProtocol 中声明的。

于 2013-02-03T19:12:51.717 回答