0

これは本当に奇妙です。ビューから CGFloat 値を取得し、viewController に送信して、オーディオ エンジンに渡します。ただし、CGFloat は、view と viewController の間で何らかの形で変更されます。完全に困惑した。

これがビューのメソッドです

-(void)mod:(CGFloat)value
{
    if(value < 0) value = 0.;
        if(value > self.bounds.size.width - 10)value =  self.bounds.size.width - 10.f;

            value =  value / (self.bounds.size.width - 10.f) ;
            NSLog(@"value %g", value);   ///prints a value between 0.0 - 1.0
            [viewController mod:value forVoice:voiceToPlay];
}

0.0 - 1.0 の値を出力する

次に、私のviewControllerでこのメソッドがそれを受け取ります...

-(void)mod:(CGFloat)value forVoice:(NSUInteger)voice
{
    NSLog(@"mod in view control %g", value);

    [audioController mod:value forVoice:voice];
}

これは、1.0842e-19、2、-2 などの完全に間違った番号を出力します。

たぶん簡単なことなんだけど、それが何かわからない!! ご協力いただきありがとうございます。

4

2 に答える 2

0

初心者なのでよくわかりませんが、本当にメソッドの入力値を別のメソッドに変更して再送してもらえますか?mod: メソッド内で別の CGFloat を作成し、その値を viewController に送信することになっていませんか?

于 2011-12-16T18:28:57.247 に答える
0

このプログラムをコンパイルすると、いくつかの警告が表示されると思います (警告を無効にしない限り)。それらを修正すると、これはなくなります。

具体的には、(a)mod: forVoice:で宣言されてviewController.hいること (および宣言が実装と一致していること) と、(b)viewController.h呼び出しの前にビューの実装ファイルに含まれていることを確認してください。

于 2011-12-16T18:30:16.603 に答える