1

class の ivar メンバーとして _label という名前のメンバーがあります。

@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
[_label setString:@"Well.there is no such a method"];

このメソッドは存在し、そのように呼び出すことができます。試してみてください、うまくいきます。

メソッドはクラスではなく CCLabelProtocol で宣言されています。

于 2013-02-03T19:12:51.717 に答える
2

メソッドはありますが、setString「非公開」のようです。この+labelWithStringメソッドは autorelease オブジェクトを作成し、繰り返し使用できます。テクスチャを作成するように見えるので、(変更しようとするのではなく) 毎回新しいテクスチャを作成する必要があります。

ただし、一般的には、自動解放されたオブジェクトを残しておきたい場合は、作業が終わったらそのままにしておく必要retainがありreleaseます。

于 2013-02-03T15:22:07.287 に答える