-1

関数に変数を渡すデバッグ クラス メニューを作成しようとしています。変数を調整するボタンと表示するラベルを作成します。次のように変数を配列に格納しようとしています。

(void)init
{
    int variableArray[10];
}

-(void)addDebugVariable:(NSString*)name value:(int*)variable
{
    variableArray[0] = variable;
}

-(void)plusButtonTapped:(CCMenuItem*)button
{
    int index = (int)[button tag];
    debugVariables[index]++;
    [debugValueLabels[index] setString:[NSString stringWithFormat:@"%f", debugVariables[index]]];
}

この方法で 2 つの問題が発生しました。プラス ボタンを押すと、変数が 1 ではなく 4 増加します。また、関数にプロパティ変数を渡すこともできません (例: self.scale、self.gravity)。

これはデバッグ クラスを実装する適切な方法ですか? 変数のアドレスを適切に保存し、ボタンが押されたときに別のクラスから変更するにはどうすればよいですか。

4

1 に答える 1

2

あなたが投稿したコードは機能しない可能性があり、混乱しすぎて誰もあなたを助けることができません. ほんの一部しか投稿していないようです。

init メソッドはローカル変数 variableArray を定義していますが、init ルーチンが終了するとすぐに存在しなくなります。

次に、別のメソッド addDebugVariable があります。このメソッドは、int への POINTER を取り、それを variableArray とも呼ばれる別の変数のインデックス 0 に割り当てます。その variableArray はどこで定義されていますか? それはあなたのクラスのインスタンス変数ですか?それに整数値を割り当てたい場合は、次のようなコードを使用する必要があります。

variableArray[0] = *variable;

メソッド addDebugVariable は、何もしない文字列を取ります。何のために?

次に、3 番目のメソッド plusButtonTapped で、まだ言及していない別の配列変数 debugVariables を変更します。値が 4 増加すると言います。これは通常、スカラー変数ではなくポインター変数を扱っていることを意味します。debugVariables はどのように宣言されていますか?

最後に、plusButtonTapped では、フォーマット文字列で「%f」を使用しています。フロート用です。整数の配列を扱っていると思いましたか?

于 2012-06-13T02:05:24.910 に答える